设计模式几大原则

设计模式的核心在于遵循一些重要的原则,这些原则是高质量代码的基础,同时也是设计模式得以实现的理论依据。以下是设计模式的六大原则:

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

每个类只负责一个功能,并且应该只有一个引起类变化的原因。

关键点:

  • 类的功能应当聚焦单一职责。
  • 降低类的复杂性,提高可读性和可维护性。

示例:
将日志记录与业务逻辑分离,一个类负责业务逻辑,另一个类负责日志。


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

软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。

关键点:

  • 可以通过扩展实现新功能,而无需修改现有代码。
  • 提高系统的灵活性和稳定性。

示例:
使用接口或抽象类,可以通过新增实现类来扩展功能,而不改动现有代码。


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

子类必须能够替换掉其父类,且程序逻辑不受影响。

关键点:

  • 保证子类行为与父类一致。
  • 避免子类对父类功能的破坏。

示例:
一个矩形类的子类正方形,必须能完全代替矩形的行为,而不引入额外限制。


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

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

关键点:

  • 通过接口或抽象类解耦高层与低层。
  • 高层模块专注于逻辑,低层模块专注于实现。

示例:
使用DAO接口,高层模块依赖接口,而具体的数据库实现由低层模块提供。


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

一个类不应该强迫实现它不使用的接口,应该将大接口拆分为多个小接口。

关键点:

  • 设计专用接口,而不是冗长的通用接口。
  • 避免接口污染和实现类的冗余。

示例:
拆分过大的动物接口,例如将飞行动物与游泳动物的功能分离。


6.迪米特法则(Law of Demeter,LoD)

一个对象应当对其他对象有最少的了解,尽量减少对象之间的耦合。

关键点:

  • 降低模块之间的依赖性。
  • 只与直接的朋友类交互,不与陌生类通信。

示例:
通过封装,避免一个类直接操作另一个类的内部结构。