在开发设计时,有些常用的原则,在这里记录一下,以供参考。
SRP | The Single Responsibility Principle | 单一责任原则 |
OCP | The Open Closed Principle | 开放封闭原则 |
LSP | The Liskov Substitution Principle | 里氏替换原则 |
ISP | The Interface Segregation Principle | 接口分离原则 |
DIP | The Dependency Inversion Principle | 依赖倒置原则 |
1. 单一责任原则(SRP)
当需要修改某个类的时候原因有且只有一个。换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。 类被修改的几率很大,因此应该专注于单一的功能。如果你把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,这时就需要新一轮的测试来避免可能出现的问题,非常耗时耗力。
2. 开放封闭原则(OCP)
软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
3. 里氏替换原则(LSP)
当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。所有引用基类的地方必须能透明地使用其子类的对象。
4. 接口分离原则(ISP)
不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。
类间的依赖关系应该建立在最小的接口上。如果一个类实现一个接口,但这个接口中有它不需要的方法,那么就需要把这个接口拆分,把它需要的方法提取出来,组成一个新的接口让这个类去实现,这就是接口隔离原则。简而言之,就是说,接口中的所有方法对其实现的子类都是有用的。否则,就将接口继续细分。
5. 依赖注入或倒置原则(DIP)
- 高层模块不应该依赖底层模块
- 高层模块和低层模块都应该依赖其抽象。
- 抽象不应该依赖细节,细节应该依赖抽象。
另外常用的还有一个迪米特法则(Law of Demeter),也叫不要和陌生人说话原则。一个对象应该对其他对象有最少的了解。