您的位置:首页 > 其它

【设计模式】——六大原则

2015-12-13 18:30 218 查看
单一职责原则(SRP,Single Responsibility Principle)

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

例子:手机可以有很多功能,但是基本上很多功能都不是最强大的,照相机的清晰度比手机相机高,摄影机的准确度比手机的录像功能强大,电视机看电视的画面感比手机强等等。其实也就是分工明确后的效率更高更好。

优点:

可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多。

提高类的可读性,提高系统的可维护性。

降低变更引起的风险。

开放—封闭原则(OCP,Open Closed Principle)

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

例子:一国两制的创造是最好的例子,大陆的社会主义制度不可更改,香港澳门的资本主义制度不可更改,那就一个国家两种制度。在设计模式中,基本内容不可更改,但可以扩展的思想来增加功能。

内容:

对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。

对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。

仅对程序中呈现出频繁变化的那些部分做出抽象隔离变化。

依赖倒转原则(DIP,Dependence Inversion Principle)

定义:高层模块不应该依赖低层模块,两个都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。

解释:抽象就是指接口或抽象类,两者都是不能直接被实例化的;细节就是实现类,实现接口或继承抽象类而产生的类就是细节,其特点就是可以直接被实例化,也就是可以加上一个关键字new产生一个对象。

要求对抽象进行编程,不要对实现进行编程,也就是针对接口的编程,而不是针对过程的编程,这样就降低了客户与实现模块间的耦合。

里氏代换原则(LSP,Liskov Substitution Principle)

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

例子:猫吃鱼,狗吃肉,老鼠的儿子会打洞。

解释:只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才可以被复用,而子类也能够在父类的基础上增加新的行为。

迪米特法则(LoD,Law of Demeter)

定义:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的互相作用。如果其中一个类需要调用另一个类的某个方法的话,可以通过第三者转发这个调用。一个对象应当对其他对象有尽可能少的了解,不和陌生人说话,简言之,低耦合。

解释:在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是private包装好,需要公开的字段,用属性来体现。

接口隔离原则(ISP,Interface Segregation Principle)

定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

解释:类A依赖接口I中的方法1、方法2、方法3,类B是对类A依赖的实现。类C依赖接口I中的方法1、方法4、方法5,类D是对类C依赖的实现。对于类B和类D来说,虽然他们都存在着用不到的方法,但由于实现了接口I,所以也必须要实现这些用不到的方法。

合成/聚合复用原则(CARR)

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

优点:优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上,这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。

现在先写这些,以后再补充吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: