软件设计模式需要考虑的原则

发布时间 2023-12-14 10:54:04作者: 爱吃砂糖橘的白龙

1. 单一职责原则(SRP,Single Responsibility Principle)

一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。职责分离,提升模块的可复用性,SRP是实现高内聚、低耦合的指导方针。

2. 开闭原则(OCP,Open-Closed Principle)

软件实体应该对扩展开放,对修改关闭。
表示软件实体应该在尽量不修改原有代码的情况下进行扩展。OCP的核心是抽象化,为系统提供稳定的抽象层 + 灵活的具体层。

3. 里氏代换原则(LSP,Liskov Substitution Principle)

所有引用基类的地方必须能透明底使用其子类的对象。
在软件中能将一个基类对象替换成他的子类对象,程序不会产生任何错误和异常;反过来不成立。程序中尽量使用积累类型来对对象进行定义,在运行时再确定其子类类型。

4. 依赖倒转原则(DIP,Dependency Inversion Principle)

高层模块不应该依赖低层模块,它们都应该依赖抽象。

5. 接口隔离原则(ISP,Interface Segregation Principle)

客户端不应该依赖那些它不需要的接口。
当接口太大时,需要将它分割为一些更细小的接口。每个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干。

6. 合成复用原则 或 组合/聚合复用(CRP,Composite Reuse Principle)

在一个新对象里,通过关联关系(组合 或 聚合关系)来使用一些已有的对象,使之成为新对象的一部分。少用继承关系。

  • 继承复用:实现简单,易于扩展,但是破坏系统封装性,没有足够的灵活性。
  • 组合/聚合复用:耦合度相对较低,有选择地调用对象成员的操作。

7. 迪米特法则 或 最少知识原则(LKP,Least Knowledge Principle)

每一个软件单位对其他的单位都只有最少的知识,而且局限于哪些与本单位有密切相关的软件单位。
可降低系统的耦合度,使类与类之间保持松散的耦合关系,要尽量减少对象之间的交互,可以引入合理的“第三者”(中间类)来降低先有对象之间的耦合度。