浅谈可复用性

软件复用是使用现有软件组件实施或更新软件系统的过程。


软件复用的两个观点:

面向复用编程:开发出可复用的软件)
基于复用编程:利用已有的可复用软件搭建应用系统


为什么需要复用:

降低成本和开发时间
经过充分测试,可靠、稳定
标准化,在不同应用中保持一致
Development for reuse: 开发可复用的软件

开发成本高于一般软件的成本:要有足够高的适应性
性能差些: 针对更普适场景,缺少足够的针对性
Development with reuse: 使用已有软件进行开发

复用分为:

白盒复用:复用代码是可用的,但通常需要一些小改造或适应
黑盒复用:通过提供一些“粘合”以组合现有代码的形式重用,但不必更改代码本身,通常是因为您无法访问代码

从另一个角度来看:

代码层级的复用:复制粘贴不推荐。
模块层级的复用:基于类的复用。通过接口将功能提供给用户使用。
类的复用:继承(白盒),委托(黑盒,显式委托常用,隐式委托)
库文件层级的复用:库文件(想选什么库文件就选什么)。
框架层级的复用:框架(主要部分写好,可定制的部分由用户完成)。一组具体类,抽象类及其连接关系。
白盒框架:通过代码层面的继承进行框架扩展。
黑盒框架:通过实现特定接口/委托进行框架扩展。
 

传统复用方案的致命缺陷是复用常常以破坏可维护性为代价的。因此我们要支持可维护性的复用,即在保持甚至提高系统的可维护性的同时,实现系统的复用。

针对三个目标,可扩展性、灵活性、可插入性。

可扩展性

允许一个具有同样接口的新类替代旧类,是对抽象接口的复用。客户端依赖于抽象接口,而不是一个具体实现类,使得这个具体类可以被别的具体类替换,而不影响客户端。这提高了系统的可扩展性。

系统可扩展性由"开-闭"原则、里氏代换原则、依赖倒转原则和组合/聚合复用原则所保证。("开-闭"原则,是指一个软件实体应当对扩展开放,对修改关闭,即可以在不修改的情况下扩展。里氏代换原则,是指任何基类可以出现的地方,子类一定可以出现。依赖倒转原则,是指要依赖于抽象,不要依赖于实现。合成/聚合复用原则,是指要尽量使用合成/聚合,而不是继承关系来达到复用目的。)

灵活性

模块相对独立,通信尽可能少。这样当一个模块修改时,对别的模块的影响很小。

这由"开-闭"原则、迪米特法则、接口隔离原则保证的。

(LY注:迪米特法则,是指一个软件实体应该与尽可能少的其他实体发生相互作用。 接口隔离原则,是指应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口)

可插入性

当一部分不再满足需要时,可以将旧的部分拔出,新的部分插入。

可插入性由"开-闭"原则、里氏代换原则、依赖倒转原则和组合/聚合复用原则所保证。

这样,在提高一个系统可维护性的同时,提高了这个系统的可复用性。具体的设计原则有:

这些原则首先是复用的原则,遵循这些原则可以有效提高系统的复用性,同时提高系统的可维护性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RecyclerView 的可复用是指它可以重复使用视图项 (View Item) 的能力,以便在滚动时提高能和效率。与 ListView 不同,RecyclerView 使用了 ViewHolder 模式来管理视图项的复用。 ViewHolder 模式通过 ViewHolder 类来存储视图项的引用,以便在需要时快速访问和更新视图项的内容。在 RecyclerView 中,当一个视图项滚出屏幕时,它的 ViewHolder 会被回收并存储在回收池中,然后可以被重新绑定到新的数据上。这种方式避免了频繁地创建和销毁视图项,提高了滚动的流畅能。 为了实现 RecyclerView 的可复用,你需要完成以下几个步骤: 1. 创建一个继承自 RecyclerView.Adapter 的适配器类,并实现必要的方法,包括创建 ViewHolder、绑定数据到 ViewHolder 和获取数据项数量等。 2. 在适配器的 onCreateViewHolder 方法中,创建并返回一个 ViewHolder 对象。这个方法会在需要新的视图项时被调用。 3. 在适配器的 onBindViewHolder 方法中,将数据绑定到 ViewHolder,并进行相应的 UI 更新操作。这个方法会在每个视图项滚入屏幕时被调用。 4. 在适配器中实现 getItemViewType 方法,通过不同的 viewType 来适配不同类型的视图项。例如,如果你的 RecyclerView 包含多种类型的视图项,你可以根据 viewType 来选择不同的布局和数据源。 5. 使用 RecyclerView.LayoutManager 来管理 RecyclerView 中的布局方式,如线布局、网格布局等。 通过上述步骤,你可以实现 RecyclerView 的可复用,提高列表的能和滚动的流畅度。同时,使用 RecyclerView 还可以实现更多功能,如添加分割线、动画效果等,以满足不同的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值