设计模式--六大原则

Posted 向阳仲伯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式--六大原则相关的知识,希望对你有一定的参考价值。

编程是武学的话,设计模式就是一套内功心法、一套剑法。

设计模式的简单理解:在编程过程中,我们对某一问题的在某种情况下的一种解决方式。设计模式是经过总结和考验得出的一种公认的普遍优化的方案,能避免那些重复出现的问题,这其中的好处,在我们遇到问题和学习使用设计模式的过程中可以细细体会。

设计模式有很多种具体的模式,但这些模式都是针对具体问题的具体实现方式,其中体现的思维方式和原则是有共同的地方的,这就是设计模式的六大原则。

1. 单一职责原则(Single Responsibility Principle)

应该有且仅有一个原因引起类的变更。职责分离,结构清晰,类的复杂度降低;可读性提高;可维护性提高;变更引起的风险降低。

2. 里氏替换原则(Liskov Substitution Principle)

定义一:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以S定义的所有程序P,以o2替换所有的对象o1时,程序P的行为没有发生变化,那么类型T就是类型S的子类。

定义二:所有引用基类的地方必须能用其子类的对象。子类必须能完全的替换父类。

子类必须完全实现父类的方法;子类可以有自己的个性;覆盖或实现父类的方法时,输入参数可以被放大,否则调用父类对象的方法时就不是子类的覆盖方法;覆盖或实现父类的方法时,输出参数可以被放缩小,返回参数可以是父类方法返回参数的子类。

采用里氏替换原则的目的就是增强程序的健壮性,可扩展性。

3. 依赖倒置原则(Dependence Inversion Principle)

包含三层含义:高层模块不应该依赖低层模块,两者都应该依赖起抽象;抽象不应该依赖细节;细节应该依赖抽象。

模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。接口或抽象类不依赖于实现类,实现类依赖于接口或抽象类。

依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。

依赖倒置在小项目中很难体现出来。

4.接口隔离原则(Interface Segregation Principle)

客户端不应该依赖他不需要的接口。类间的依赖关系应该建立在最小的接口上。建立单一接口,不要建立臃肿庞大的接口,接口尽量细化。其包含4层含义:

接口要尽量小,但要以单一职责原则为前提;接口高内聚;接口可以定制服务;接口隔离设计是有限度的。

5. 最少知识原则(Least Knowledge Principle) 或 迪米特法则 (Law of Demeter)

一个对象应该对其他对象有最少的了解。一个类应该对自己需要耦合或调用的类知道的最少,内部如何不需要关心。

这对类的低耦合提出了明确的要求,其包含含义:只和朋友交流(耦合的类);朋友间也是有距离的(低耦合);是自己的就是自己的(如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中)

6. 开闭原则 (Open Closed Principle)

对于扩展是开放的(Open for extension),这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。

开闭原则是“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。

 

六大设计原则,单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、最小知识原则或迪米特法则、开闭原则。

以上是关于设计模式--六大原则的主要内容,如果未能解决你的问题,请参考以下文章

设计模式六大原则

设计模式六大原则

设计模式六大原则

转:设计模式六大原则

设计模式六大原则-----转载

java设计模式六大原则