设计原则
中文名称 | 英文名称 | 含义 | 解释 |
---|---|---|---|
单一职责原则 | Single Responsibility Principle(SRP) | 任何一个软件模块都应该只对某一类行为者负责 | 一个类只干一件事,实现类要单一 |
开闭原则 | Open-Close Principle(OCP) | 软件实体(类、模块、函数等)应该是可以扩展的,但是不可以修改 | 对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果 |
里氏代换原则 | Liskov Substitution Principle(LSP) | 子类型必须能够替换掉他们的基类型,且不改变原有逻辑 | 实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实体抽象化的具体步骤的规范。 |
接口隔离原则 | Interface Segregation Principle(ISP) | 接口应该是内聚的,不应该强迫客户依赖他们不用的方法 | 使用多个隔离的接口,比使用单个接口要好 |
依赖倒转原则 | Dependency Inversion Principle(DIP) | 高层模块不应该依赖底层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象 | 针对接口编程,依赖于抽象而不依赖于具体 |
迪米特法则 | Demeter Principle(DP) | 一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立 | 最少知道原则 |
合成复用原则 | Composite Reuse Principle(CRP) | 尽量使用组合(contains-a)、聚合(has-a)的方式而不是继承(is-a)的关系来达到软件复用的目的 | 类之间的耦合度较低,一个类的变动对其他类的影响较小 |