面向对象设计(OOD)原则

2018-02-23  本文已影响0人  绿皮黄瓜

SOLID 七大原则

开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭;
单一职责原则告诉我们实现类要职责单一;
里氏替换原则告诉我们不要破坏继承体系;
依赖倒置原则告诉我们要面向接口编程;
接口隔离原则告诉我们在设计接口的时候要精简单一;
迪米特法则告诉我们要降低耦合;
合成复用原则告诉我们少继承,多复用

单一职责原则 Single Responsibility Principle, SRP

定义

一个类只负责一项职责。不要存在多于一个导致类变更的原因。

目的

开闭原则 Open-Closed Principle, OCP

定义

一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。软件实体应尽量在不修改原有代码的情况下进行扩展。
为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。

目的

提高系统适应性和稳定性。方便地对系统进行扩展,而且在扩展时无须修改现有代码,降低变更引起的风险。

里氏代换原则 Liskov Substitution Principle, LSP

定义

所有引用基类的地方必须能透明地使用其子类的对象。

具体做法

子类可以扩展父类的功能,但不能改变父类原有的功能。
当使用继承时,遵循里氏替换原则。类B继承类A时,除添加新的方法完成新增功能P2外,尽量不要重写父类A的方法,也尽量不要重载父类A的方法。

目的

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

依赖倒转原则 Dependency Inversion Principle, DIP

定义

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

做法

面向接口编程

目的

降低类之间的耦合性,提高系统的稳定性,降低修改程序造成的风险。

接口隔离原则 Interface Segregation Principle, ISP

定义

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

做法

建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

目的

依赖几个专用的接口要比依赖一个综合的接口更灵活。
接口是设计时对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。

迪米特法则 Law of Demeter, LoD (最少知识原则 LeastKnowledge Principle, LKP))

定义

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

做法

只与直接的朋友通信。出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友。

目的

可降低系统的耦合度,使类与类之间保持松散的耦合关系

合成复用原则 Composite Reuse Principle, CRP(组合/聚合复用原则 Composition/Aggregate Reuse Principle, CARP)

定义

尽量使用对象组合,而不是继承来达到复用的目的。

做法

复用时要尽量使用组合/聚合关系(关联关系),少用继承。

目的

继承复用会破坏系统的封装性,如果基类发生改变,那么子类的实现也不得不发生改变

refer

http://blog.csdn.net/zhengzhb/article/details/7296944

上一篇 下一篇

猜你喜欢

热点阅读