面向对象基础设计原则
- 抽象
- 封装
- 继承
- 多态
- 组合
典型的设计原则
-
Liskov替换原则(LSP)
- 即子类型必须能够替换他们的基类型,或者说子类型不能添加任何基类型没有的附加约束。
- 针对接口编程思想:实现继承破坏了基类的实现,接口继承并不定义对象之间的内部关系,耦合度更低,扩展性更好
-
开放-封闭原则(OCP)
- 即对修改封闭,对扩展开放
- 基本思想就是封装变化的行为作为抽象类或接口
- 策略模式和模板方法模式提供了实现
-
单一职责原则(SRP)
- 即一个类应当只有一个职责
- 建立高内聚的类,分离出不相关的功能
-
接口隔离原则(ISP)
- 即接口的单一职责性
- 定制服务,为不同的角色提供不同的接口,防止接口污染
-
依赖倒置原则(DIP)
- 即高层模块不应依赖于低层模块,两者都应该依赖于抽象
- 面向接口编程,让高层与低层都依赖接口(抽象)
- 其他表述
- 好莱坞原则:呆着别动,到时我会找你
- 控制反转(IoC)或依赖注入
- 比如利用抽象工厂模式解除两个类之间的依赖关系;利用Spring框架通过XML配置文件建立接口和具体类之间的关系
-
迪米特准则(LOD)
- 即一个类对于所依赖的类知道的越少越好
- 这是一个实用的职责分配模式,他指出应该与直接朋友通信,将系统的耦合度保持最低
- 被依赖的类对外公开的方法要少,要建立中间人委托机制,进而面向接口编程
良好的OO设计
- 可复用
- 可扩充
- 可维护
- 设计模式
23种GoF设计模式
设计模式分为类模式和对象模式,类模式处理类和派生类之间的继承关系,对象模式处理对象之间的组织关系。