《java与模式》-2 软件的可维护性和可复用性

  • 导致软件可维护性低的真正原因有四个:过于僵硬,过于脆弱,复用率低,粘稠度高。

    1. 过于僵硬:很难在一个软件系统里加入一个新的性能,哪怕是很小的都很难。
    2. 过于脆弱:对一个地方的修改,往往会导致看上去没什么关系的另一个地方发生故障。
    3. 复用率低:所谓复用,就是指一个软件的组成部分,可以在同一个项目的不同地方甚至令一个项目中重复使用。如果程序员在写代码的时候总是发现现有的代码依赖于一大堆其他的东西,而重新写自己的代码,这样的系统将由复用率低的问题。
    4. 粘稠过高:有的时候,一个改动可以以保存原始设计意图和原始设计框架的方式进行,也可以是以破坏原始意图和框架的方式进行。如果一个系统设计总是使得第二种方法比第一种方法容易,就叫粘稠过高。
  • 设计的目标:一个好的设计应该具有如下的性质:可扩展性,灵活性,可插入性

    1. 可扩展性:新的性能很容易加入到系统中去,就是可扩展性。这是过于僵硬的反面。
    2. 灵活性:可以允许代码修改平稳的发生,而不会波及到很多其他的模块,这就是灵活性。是过于脆弱的反面。
    3. 可插入性:可以很容易的将一个类抽出去,同时将另一个有同样接口的类加入进来,这就是可插入性,是“粘稠过高”的反面。
  • 复用的重要性:第一,较高的生产效率;第二,较高的软件质量;第三,适当的使用复用可以改善系统的可维护性。
    • 复用不仅仅是代码的复用,代码复用只是复用的初等形式
    • 传统的复用:代码的剪贴复用,算法的复用,数据结构的复用。
    • 在一个面向对象的语言中,数据的抽象化、继承、封装和多态性等特性使得一个系统可以在更高的层次上提供复用性。
  • 复用的定义:
    • 抽象化和继承关系使得概念和定义可以复用
    • 多态性使得实现和应用可以复用。
    • 抽象化和封装可以保持和促进系统的可维护性。使得复用的焦点不再集中在函数和算法等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。

问题1:A模块和B模块同时使用C模块的功能,当A需要C增加一个新的行为,而B不需要,甚至不允许。这时候坚持复用就不得不以系统维护为代价,而如果保持系统的可维护性就只好放弃。可维护性与可复用性是有共同性的两个独立个性,那么一个重要的概念就是 支持可维护的复用

面向对象设计的复用

抽象层是一个系统做战略性判断和决定的地方,应当是稳定的。如果抽象层相对独立于具体层的模块的话,那么具体层的内部变化就不会影响到抽象层的层次结果,所以抽象层的模块复用就比较容易。

设计原则:开闭原则、里氏代换原则、 依赖倒转原则、组合/聚合复用原则、接口隔离原则、迪米特法则;

设计模式可以分成:创建模式、结构模式、行为模式;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值