设计模式3:面对对象设计七大原则

2020-12-17  本文已影响0人  _浅陌

1.开闭原则(open close principle)

定义:对扩展开放,对修改关闭

当应用需求改变时,在不修改软件实体的源代码或者二进制的前提下,可以扩展该模块的功能,以满足新的需求。

方法:抽象约束,封装变化

通过接口或者抽象类定义相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。

2.里氏代换原则(liskov substitution principle LSP)

定义:继承的原则—继承必须确保超类所拥有的性质在子类中仍然成立。任何基类可以出现的地方,子类一定可以出现。

方法:子类可以扩展父类的功能,但不能改变父类原有的功能。即尽量不要重写父类的方法。

1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法

2.子类中可以增加自己特有的方法

3.当子类的方法重载父类的方法时,方法的前置条件(即方法的输入参数)要比父类的方法更宽松

4.当子类的方法实现父类的方法时,方法的后置条件(即方法的返回值)要比父类的方法更严格或相等

3.依赖倒置原则(dependence inversion principle)

定义:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。核心思想表现为:面向接口编程,依赖于抽象而不依赖于具体

方法:面向接口编程

1.每个类尽量提供接口或者抽象类,或者两者都具备

2.变量的生命类型尽量是接口或者是抽象类。

3.任何类都不应该从具体类派生。

4.使用继承时尽量遵循里氏替换原则

4.单一职责原则(single responsibility principle)

定义:规定一个类应该有且仅有一个引起它变化的原因。它要求控制类的粒度大小,将对象解耦,提高其内聚性。

单一职责原则同样适用于方法。一个方法应尽可能做好一件事情。

5.接口隔离原则(interface segregation principle)

定义:将臃肿庞大的接口拆分成更小和更具体的接口。任何类不应该被迫依赖于它不使用的方法。

实现:为各个类建立他们需要的专用接口,不要试图建立一个庞大的接口供所有依赖它的类去调用。

1.接口尽量小,但是要有限度。一个接口只服务于一个子模块或者业务逻辑。

2.为依赖接口的类定制服务。只提供调用者需要的方法,屏蔽不需要的方法。

3.提高内聚,减少对外交互。使接口用最少的方法完成最多的事情。

6.迪米特法则(最少知道原则)(demeter principle)

定义:只与你的直接朋友交谈,不跟陌生人说话。一个实体应当尽量少的与其他实体之间发生直接的相互作用,可以通过第三方转发该调用,使得系统功能模块相对独立。

一个对象应该对其它对象保持最少的了解。

1.从依赖着的角度来说,只依赖应该依赖的对象

2.从被依赖的角度来说,只暴露应该暴露的方法。

7.合成复用原则(composite reuse principle)

定义:复用时,尽量使用组合、聚合等关联关系来实现,而不是使用继承。

继承复用破坏了类的封装行。因为继承会将父类的实现细节暴露给子类,父类对子类是透明的,所以这种复用又称为“白箱”复用。耦合度高,限制了复用的灵活性。

方法:将已有的对象纳入新对象中,作为新对象的成员对象来实现。新对象可以调用已有对象的功能,从而达到复用。

上一篇下一篇

猜你喜欢

热点阅读