目录
一,最高原则
- 高内聚
- 低耦合
二,正交四原则
- 消除重复
- 分离关注点
- 减小不必要的依赖
- 向着稳定的方向依赖
三,简单设计四原则
1 通过所有测试(Passes its tests)
2 尽可能消除重复(Minimizes duplication)
3 尽可能清晰表达(Maximizes clarity)
4 更少的代码元素(Has fewer elememts)
以上四个原则的重要程度依次降低。
四,SOLID设计原则
- Single Responsibility Principle:单一职责原则
- Open Closed Principle:开闭原则
- Liskov Substitution Principle:里氏替换原则
- Interface Segregation Principle:接口隔离原则
- Dependence Inversion Principle:依赖反转原则
1,SRP:单一职责原则
任何一个软件模块都应该有且只有一个被修改的原因。
常见误区:认为这条原则是说每个模块都应该只做一件事情。这只是面向底层实现的设计原则,并不是SRP的全部。
2,OCP:开闭原则
一个设计良好的计算机系统应该在不需要修改的前提下就可以轻易被拓展。
实现方法:先将满足不同需求的代码分组(SRP),再调整这些分组之间的依赖关系(DIP)
3,LSP:里氏替换原则
把对象的类型换成其子类型时,行为保持不变。
早期普遍认为,LSP只不过是指导如何使用继承关系的一种方法,然而随着时间的推移,LSP逐渐演变成了一种更广泛的、指导接口与其实现方式的设计原则。
4,ISP:接口隔离原则
客户端不应该被迫依赖于它不使用的方法。
5,DIP:依赖反转原则
多使用稳定的抽象接口,少依赖多变的具体实现。
依赖注入/控制反转 依赖注入/控制反转_nameofcsdn的博客-CSDN博客
应用DIP时,主要关注的是那些会经常变动的具体实现模块,像String类这种本身非常稳定的不需要考虑。
五,其他面向对象设计原则
1,迪米特法则
应该尽可能的少暴露自己的接口,应该尽可能的少暴露自己的接口。
有人把SOLID原则总结为6条原则,即上面的5条加上迪米特法则Law of Demeter
2,合成复用原则
在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚 至不使用继承关系。(Composite Reuse Principle, CRP)
六,软件设计开发技术演进