里氏替换原则
- List item
理解:父类一定能够被子类替换
最少知识原则
- 只与你最直接的对象交流
- 理解:低耦合,高内聚
- 应用:做系统设计时,尽量减小依赖关系
接口隔离原则
- 一个类与另一个类之间的依赖性,应该依赖于尽可能小的接口
- 理解:不要对外暴露没有实际意义的接口。用户不应该依赖它不需要的接口
- 应用:当需要对外暴露接口时,如果是非必要对外提供,尽量删除。
依赖倒置原则
- 高层模块不应该依赖于低层模块,它们应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
- 理解:应该面向接口编程,不应该面向实现类编程。
- 并不是说,所有的类都要有一个对应的接口,而是说,如果有接口,那就尽量使用接口来编程吧。
总结
- 将以上六大原则的英文首字母拼在一起就是SOLID(稳定的),所以也称之为SOLID原则。
- 只有满足了这六大原则,才能设计出稳定的软件架构!
补充设计原则
组合/聚合复用原则
- 当要扩展类的功能时,优先考虑使用组合,而不是继承。
- 该原则在23种经典设计模式中频繁使用。
- 如:代理模式、装饰模式、适配器模式等。
无环依赖原则
- 当A模块依赖于B模块,B模块依赖于C模块,C依赖于A模块,此时将出现循环依赖。
- 在设计中避免该问题,可通过引入“中介者模式”解决。
共同封装原则
- 应该将易变的类放在同一个包里,将变化隔离出来。
- 该原则是“开放-封闭原则”的诞生。
共同重用原则
- 如果重用了包中的一个类,那么也就相当于重用了包中的所有类,我们要尽可能减小包的大小。
好莱坞原则
- Don’t call me, I’ll call you.
- “控制翻转”(或称为“依赖注入”)
- 不需要主动创建对象,而是由容器帮我们来创建并管理这些对象。
不要重复你自己
- 不要让重复的代码到处都是,要让他们足够的重用,所以要尽可能地封装。
保持它简单与傻瓜
- 保持系统界面简介,功能实用,操作方便。
高内聚与低耦合
- 模块内部需要做到内聚度高,模块之间需要做到耦合度低。
关注点分离
- 将一个复杂的问题分离为多个简单的问题,然后逐个解决。
- 难点:如何进行分离。
你不需要它
- 不要一开始就把系统设计得非常复杂,不要陷入“过度设计”的深渊。
- 让系统足够简单,而又不是扩展性。