澳门威尼斯人网址升级可维护性的 4 个对象,      面向对象设计规范为接济可维护性复用而诞生

 
对于面向对象软件系统的安排而言,在协助可维护性的还要,提升系统的可复用性是一个首要的题材,如何同时增强3个软件系统的可维护性和可复用性是面向对象设计须要化解的主干难点之一。在面向对象设计中,可维护性的复用是以规划原则为根基的。每壹个条件都富含一些面向对象设计的沉思,可以从分裂的角度进步壹个软件结构的筹划水平。

  对于面向对象软件系统的规划而言,在协理可维护性的同时,提升系统的可复用性是三个第壹的标题,如何同时抓牢壹个软件系统的可维护性和可复用性是面向对象设计必要缓解的中央难题之一。在面向对象设计中,可维护性的复用是以统筹标准为底蕴的。每二个标准化都带有一些面向对象设计的思考,可以从区其余角度进步二个软件结构的统筹水平。

      面向对象设计条件为扶助可维护性复用而诞生,那几个原则包蕴在广大设计格局中,它们是从许多设计方案中计算出的教导性标准。面向对象设计标准也是大家用来评论二个设计格局的采纳效益的关键目标之一,在设计情势的上学中,大家平时会看出诸如“XXX形式符合XXX原则”、“XXX形式违反了XXX原则”那样的口舌。

      面向对象设计原则为支撑可维护性复用而诞生,这一个标准包蕴在不少设计情势中,它们是从许多设计方案中总括出的指令性原则。面向对象设计标准也是大家用来评论2个设计情势的利用效益的重点目标之一,在设计方式的就学中,大家平时会看出诸如“XXX情势符合XXX原则”、“XXX格局违反了XXX原则”那样的言语。

 

       最广大的7种面向对象设计原则如下表所示:

      
最广泛的7种面向对象设计规范如下表所示:

什么样同时抓牢1个软件系统的可维护性和可复用性,是面向对象设计要缓解的主干难点。

表1  7种常用的面向对象设计原则

表1 
7种常用的面向对象设计规范

 

设计原则名称

定  义

使用频率

单一职责原则

(Single Responsibility Principle, SRP)

一个类只负责一个功能领域中的相应职责

★★★★☆

开闭原则

(Open-Closed Principle, OCP)

软件实体应对扩展开放,而对修改关闭

★★★★★

里氏代换原则

(Liskov Substitution Principle, LSP)

所有引用基类对象的地方能够透明地使用其子类的对象

 

★★★★★

依赖倒转原则

(Dependence  Inversion Principle, DIP)

抽象不应该依赖于细节,细节应该依赖于抽象

★★★★★

接口隔离原则

(Interface Segregation Principle, ISP)

使用多个专门的接口,而不使用单一的总接口

★★☆☆☆

合成复用原则

(Composite Reuse Principle, CRP)

尽量使用对象组合,而不是继承来达到复用的目的

 

★★★★☆

迪米特法则

(Law of Demeter, LoD)

一个软件实体应当尽可能少地与其他实体发生相互作用

★★★☆☆

 

设计原则名称

定  义

使用频率

单一职责原则

(Single Responsibility Principle, SRP)

一个类只负责一个功能领域中的相应职责

★★★★☆

开闭原则

(Open-Closed Principle, OCP)

软件实体应对扩展开放,而对修改关闭

★★★★★

里氏代换原则

(Liskov Substitution Principle, LSP)

所有引用基类对象的地方能够透明地使用其子类的对象

 

★★★★★

依赖倒转原则

(Dependence  Inversion Principle, DIP)

抽象不应该依赖于细节,细节应该依赖于抽象

★★★★★

接口隔离原则

(Interface Segregation Principle, ISP)

使用多个专门的接口,而不使用单一的总接口

★★☆☆☆

合成复用原则

(Composite Reuse Principle, CRP)

尽量使用对象组合,而不是继承来达到复用的目的

 

★★★★☆

迪米特法则

(Law of Demeter, LoD)

一个软件实体应当尽可能少地与其他实体发生相互作用

★★★☆☆

 

可爱抚性低的 4 个症状:

作品出处:http://blog.csdn.net/lovelion/article/details/7536532

  •   过于僵硬

    很难加入新的作用。加入新职能,不仅象征构造3个独立的模块,而且因为那几个新成效会提到许多任何模块,最终成为跨越多少个模块的改动。由于这种规划上的老毛病,项目CEO不敢轻易向系统进入新成效。那就造成了多个连串一旦办好,就不可以扩张新效率的僵硬化情形。

 

针对“新增功能”,也就是系统的“可扩展性”差

 

  •   过于脆弱

    与过度执拗同时存在,对三个地点的改变,往往会招致看上去没有涉嫌的别的三个地点时有暴发故障。在修改形成以前,连系统的原有设计师们都不可以适用预测到恐怕会波及哪些地点。那种一碰就碎的情状,造成了软件系统过于脆弱。

针对“修改已有功能”,也就是系统的“灵活性”差

 

  •   黏度过高

    一些时候,改动能够用有限支撑原来设计意图和原始设计框架的方式进行,也能够用破坏原始意图和框架的方法开展。第三种方法的确会对系统的前景便宜,第两种艺术只是权宜之计,可以消除长时间的标题,但却会就义中长时间的功利。

    五个系列规划,如若接二连三使得第①种艺术比第贰种艺术简单,就称为黏度过高。一个黏度过高的系统会引诱维护它的程序员采取不当的维护方案,并处以接纳正确维护方案的程序员。

针对“替换现有功能”,也就是“可插入性”差

 

 

  •   复用率低

    所谓复用,就是指一个软件的组成部分,可以在同二个连串的不比地点依旧另1个种类中重复使用。每当程序员发现一段代码、函数、模块所做的作业是足以在新的模块、只怕新的系统中运用的时候,总是发现,这个已部分代码尊崇于一大推其余的事物,以至于很难将它们分别。最后,大家发现最好的形式就是不去“碰”那么些已某些东西,而是重新写自个儿的代码。进度中也说不定通过源代码复制与粘贴的办法,以最原始的复用情势,节省一些光阴。

 

 

晋升可维护性的 4 个目的

  •   可扩张性
      新的效益可以很不难地出席到系统中。那是“过于执拗”的对峙面。
  •   灵活性
      允许代码修改平稳进行,而不会涉嫌到其余的模块。这是“过于脆弱”的对峙面。

 

  •   可插入性
      可以很不难地将二个类抽出去,同时将另贰个有同样接口的类出席进去。那是“黏度过高”的周旋面。
  •   可复用性 

什么样兑现那些体系规划的靶子吧?

 

        可伸张性:开-闭原则、里氏代换原则、依赖倒置原则、组合/聚合复用原则

      灵 活
性:
开-闭原则、迪米特法则、接口隔离原则

     
可插入性:开-闭原则、里氏代换原则、组合/聚合复用原则、看重倒置原则 

系统的可复用性

 

复用的首要性
 

  • 增进生产功用
  • 增进软件质量
  • 句酌字斟可维护性

观念的复用
 

  • 代码的复制与粘贴
  • 算法的复用

  • 数据结构的复用

三个沉重缺陷是复用平日以破坏可维护性为代价。比如,两个模块A、B同时须要运用三个模块C的效能。那么,当A需求C扩充三个新的一言一动时,B有大概不须要,甚至不允许C扩充那一个新作为。假设锲而不舍复用,就不足以体系的可维护性为代价;而只要从保持系统的可维护性出发,就只可以吐弃复用。

 

面向对象设计的复用

  • 复用焦点从完结细节提高到抽象层次
     
  • 更好地改良软件系统的可维护性

面向对象设计通过提供了包装、继承和多态等性格,使得一个连串能够在更高的层系上提供可复用性。数据的抽象化和继续关系使得概念和概念可以复用;多态性使得完结和动用可以复用;而抽象化和包裹可以保持和拉动种类的可维护性。 

面向对象思想的三大主导要素

封装
 

  • 打包,就是客观的藏身与公开
  • 对数据的潜伏、对完成的包裹、对转移实行打包
  • 增长代码可读性,使系统更易驾驭和拔取

继承
 

  • 选定和浮泛的根底
  • 可以自上而下设计,也得以通过重构自下而上
  • 预先利用合成/聚合,而不是应用持续

多态
 

  • 目的在不一致随时体现为不相同门类的能力
  • 将对象形态的决定权交给了调用者,保险了先后的油滑
  • 还担保了先后的安静

    
面向对象思想包蕴四个为主成分,即:封装、继承、多态,它将面向对象技术推到了思维的境地。只有真正精晓了那多少个成分,才算得上控制了面向对象思想的精华。

 

目的的包装、继承与多态,保障了对象的高内聚与低耦合,有利于软件模块的复用,保险了程序的可扩展,那也是面向对象思想在软件设计中的最大优势。

 

未完待续。。。

相关文章