欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式的原则和法则

程序员文章站 2022-03-10 16:44:49
设计模式中的原则和法则: 1、开闭原则: 开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:软件实体应当对 ......

设计模式中的原则和法则:

1、开闭原则:

开闭原则(open closed principle,ocp)由勃兰特·梅耶(bertrand meyer)提出,他在 1988 年的著作《面向对象软件构造》(object oriented software construction)中提出:软件实体应当对扩展开放,对修改关闭(software entities should be open for extension,but closed for modification),这就是开闭原则的经典定义。

开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。

 

2、里式替换原则:

里氏替换原则(liskov substitution principle,lsp)由麻省理工学院计算机科学实验室的里斯科夫(liskov)女士在 1987 年的“面向对象技术的高峰会议”(oopsla)上发表的一篇文章《数据抽象和层次》(data abstraction and hierarchy)里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立(inheritance should ensure that any property proved about supertype objects also holds for subtype objects)。

里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。

里氏替换原则是实现开闭原则的重要方式之一。


3、依赖导致原则:

依赖倒置原则(dependence inversion principle,dip)是 object mentor 公司总裁罗伯特·马丁(robert c.martin)于 1996 年在 c++ report 上发表的文章。依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(high level modules shouldnot depend upon low level modules.both should depend upon abstractions.abstractions should not depend upon details. details should depend upon abstractions)。

其核心思想是:要面向接口编程,不要面向实现编程。

依赖倒置原则是实现开闭原则的重要途径之一,它降低了客户与实现模块之间的耦合。

 

4、单一职责原则

单一职责原则(single responsibility principle,srp)又称单一功能原则,由罗伯特·c.马丁(robert c. martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(there should never be more than one reason for a class to change)。

单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性。

 

5、接口隔离原则

接口隔离原则(interface segregation principle,isp)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。2002 年罗伯特·c.马丁给“接口隔离原则”的定义是:客户端不应该*依赖于它不使用的方法(clients should not be forced to depend on methods they do not use)。该原则还有另外一个定义:一个类对另一个类的依赖应该建立在最小的接口上(the dependency of one class to another one should depend on the smallest possible interface)。

以上两个定义的含义是:要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

接口隔离原则是为了约束接口、降低类对接口的依赖性

 

 

未完待续……