设计模式笔记:设计原则 - SOLID

设计原则中 SOLID 各个字母各自代表了一个原则,指导了各个设计模式的思想。

单一职责原则(SRP)

一个类或模块只负责完成一个职责,不要设计大而全的类,要设计粒度小、功能单一的类。如果一个类包含了两个或两个以上不相关的功能,就说明职责不够单一,应该拆分成更加单一、粒度更细的类。

单一职责原则是为了实现代码高内聚、低耦合,提高代码的复用性、可读性、可维护性。

开闭原则(OCP)

对扩展开放,对修改关闭。即增加一个新功能,不是直接在已有代码基础上扩展代码,而非修改已有代码。做到这点需要时刻具备扩展意识、抽象意识、封装意识。对扩展开放是为了应对修改变化,对修改关闭是为了保证代码稳定性。

里式替换(LSP)

子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。与面向对象的多态性不同的是,多态是一个大特性,一种代码实现思路,可以有不同的意向,而里式替换必须保证逻辑的不变。

接口隔离原则(ISP)

客户端不应该被强迫依赖它不需要的接口,其中“客户端”可以理解为接口的调用者或者使用者。“接口”也有不同的理解:当理解为一组接口集合时,比如某类库的接口,这部分接口只被部分调用者调用,则需要把这部分接口隔离出来,单独给到这部分调用者使用,使得其他调用者不必依赖这部分不会被用到的接口;当理解为单个 API 接口或函数时,部分调用者仅需要调用函数中的部分功能,则需要把这个函数划分为更细粒度的函数;当理解为面向对象中的接口时,那么接口的设计要尽量单一,不要让接口的实现类和调用者,以来不需要的接口函数。

依赖反转原则(DIP)

高层模块不要依赖底层模块。高层模块和低层模块应该通过抽象相互依赖。抽象不要依赖具体实现,具体实现依赖抽象。

添加新评论