文章目录
面向对象设计原则理解
1.0记忆口诀
1.1开口合里最单依
- 开:开闭原则
- 口:接口隔离原则
- 合:合成复用原则
- 里:里氏替换原则
- 最:最少知识原则,迪米特法则
- 单:单一职责
- 依:依赖倒转原则
2.0开闭原则(Open-Closed Principle OCP)
- 面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则
- 一个软件的实体应对扩展开放,对修改关闭。设计一个模块的时候,应当使这个模块在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为。
- 抽象化是OCP原则的关键
3.0接口隔离原则(Interface Segregation Principe,ISP)
- 要求将一些较大的接口进行细化,使得多个专门的接口来替代单一的总接口
- 客户端不应依赖那些不需要的接口
- 接口:一种类型所具有的方法特征的集合
4.0合成复用原则(Composite Reuse Principe,CRP)
降低系统间类的耦合度,倡导多用关联,少用继承
尽量使用对象组合,而不是继承来达到目的
4.1复用机制特点:
一个类的对象作为另一个类的对象的一部分,或者说一个对象有另一个对象或几个对象组合而成
5.0里氏替换原则(Liskov Substitution Principe,LSP)
所用引用父类对象的地方都可以透明的引用子类对象
5.1注意的问题
- 子类的所有方法必须在父类声明,或子类必须实现父类的所有方法
- 尽量将父类设计成抽象或接口
6.0迪米特法则
一个软件实体尽可能少的与其他软件实体发生相互作用
6.1在迪米特法则中对于一个对象其朋友包括以下几类:
- 当前对象本身
- 以参数方式传入到当前对象方法中的对象
- 当前对象的成员对象
- 若当前对象的成员对象是一个集合,那么集合的元素也是朋友
- 当前对象所创建的对象
7.0单一职责
一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中
就一个类而言就只有一个能引起它变化的原因
8.0依赖倒转原则
高层模块不应该依赖底层模块,它们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象
要针对接口编程,不要针对实现编程。