设计模式之——六大原则

来源:互联网 发布:淘宝商城平板电脑 编辑:程序博客网 时间:2024/06/06 02:50
 

单一职责原则SRP:Single Responsibility Principle)

    定义:就一个类而言,应该仅有一个引起它变化的原因。

   简述:不要把变化原因各不相同的职责放在一起,因为不同的变化会影响到不相干的职责。再通俗一点地说就是,不该你管的事情你不要管,管好自己的事情就可以了,多管闲事害了自己也害了别人。(当然这里说的多管闲事跟见义勇为是两回事,我们提倡见义勇为!)

 

开放——封闭原则OCP:Open-Close Principle)

    定义:软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。

   简述:第一次看这个原则的时候我都看傻了,我当时在想“这不是做白日梦吗!不修改怎么扩展啊?”但是随着学习的深入,理解了这个“不修改”是什么意思,意思是“你可以随便增加新的类,但是不要修改原来的类”。从这个角度去理解就好多了,其实这里还是一个隔离变化的问题。

 

依赖倒转原则DIP:Dependence Inversion Principle)

    定义:抽象不应该依赖细节,细节应该依赖于抽象。

    简述:只有抽象的东西才是最稳定的,也就是说,我们依赖的是它的稳定。如果将来“抽象”也不稳定了,那么谁稳定我跟谁。这其实很像日本(纵观日本的历史,哪个国家强大就傍谁)!哈哈!

 

里氏代换原则LSP:Liskov Substitution Principle)

    定义:子类型必须能够替换它们的父类型。

   简述:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。这是因为有了这个原则,使得继承复用成为了可能,当然,也使得开放-封闭成为了可能。

 

迪米特法则LoD:Law Of Demeter)

    定义:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

    简述:迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用性才可以提高。形象一点的比喻类似于:监狱内的犯人是不应该跟外面的人接触的,当然或许会有探亲的。这里的监狱就是类,里面的犯人就是类内部的信息,而监狱里的狱警就相当于迪米特法则的执行者。

 

合成/聚合原则CARP:Composite/Aggregate Reuse Principle)

   定义:尽量使用合成/聚合,尽量不要使用类继承。

   简述:合成/聚合原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。合成和聚合都是关联的特殊种类。聚合表示整体和部分的关系,表示“拥有”;合成则是一种更强的“拥有”,部分和整体的生命周期一样。合成的新的对象完全支配其组成部分,包括它们的创建和湮灭等。一个合成关系的成分对象是不能与另一个合成关系共享的。换句话说,合成是值的聚合,而一般说的聚合是引用的聚合。简短的说,合成-聚合原则(CARP)是指,尽量使用合成/聚合,而不是使用继承。