面向对象设计原则
简介:
- SRP 单一职责原则
- OCP 开闭原则
- LSP里氏替换原则
- DIP依赖倒置原则
- ISP 接口隔离原则
- LOP 迪米特原则
- CARP 组合/聚合复用原则
SRP
单一职责原则
一个类只有一个职责,这个类只做一件事情。
高内聚,低耦合
OCP
开闭原则
对扩展开放,对修改关闭,要保证不修改原来的代码。
应对程序中频繁变化的部分做抽象。
LSP
里氏替换原则
任何父类出现的地方,都可以被子类替换,并且替换之后,不会对程序产生影响。
本质:衡量父类是否包含了所有子类的共同部分。
DIP
依赖倒置原则
高层不依赖于底层,调用者不应该依赖于被调用者,都应该依赖于抽象。高层和底层都应面向接口或基于抽象类编程。
抽象不应该依赖于细节,细节应该依赖于抽象。
注意:开闭原则和依赖倒置原则是目标和手段的关系。
对象注入:类本身不直接实例化它所依赖的类的对象,由外界动态地注入。
ISP
接口隔离原则
接口拆分,多个专门接口优于单一总接口。
LOP
迪米特原则
也叫最少支持原则,也就是在不影响外部程序的情况下,让程序有最低的访问级别。
互不了解—>中介类,要有度
CARP
组合/聚合复用原则
写程序时,如果需要代码复用,最好先使用组合和聚合的方法实现代码的复用,再考虑继承。
组合:整体离不开部分,部分离开整体没有意义,如飞机翅膀与飞机的关系。
聚合:整体可以离分部分,部分也可以离开整体,如火车和车厢的关系。
组合/聚合:通过获得其他对象的引用,在一个对象中保存其他对象的属性。这种方式要求对象有良好定义的接口,并且接口也不经常发生改变,而且对象只能通过接口来访问。