今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第21节的学习笔记,介绍面向对象设计原则中的DRY原则。

笔记

面向对象有很多经典的设计原则:

  • SOLID5原则分别是
    • 单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖反转原则(DIP)
  • KISS - Keep It Simple, Stupid
  • YAGNI - You aren't gonna need it
  • DRY - Don't Repeat Yourself
  • LOD - Law of Demeter(迪米特法则,又叫做最少知识原则)

DRY原则

DRY原则,中文译为不要重复自己,不要写重复代码,不要自己造轮子。 但实际上,重复的代码不一定违背DRY原则,而有些看似不重复的代码确可能违背DRY原则。 DRY原则也与代码的复用性相关。

实际场景中有三种代码重复的情况: 实现逻辑重复、功能语义重复、代码执行重复。 实现逻辑重复,但功能语义不重复的代码并不违反DRY原则,可以通过抽象成更细粒度的函数的方式来重构和解决。 实现逻辑不重复,但功能语义重复的代码也算违反DRY原则。另外,代码执行重复也是违反DRY原则。

提高代码复用性的方法:

  • 减少代码耦合
  • 满足单一职责原则
  • 模块化
  • 业务与非业务逻辑分离
  • 通用代码下沉
  • 继承、多态、抽象、封装
  • 应用模块等设计模式

个人理解

DRY原则也是一个指导方针型原则。 张无忌学太极拳,忘记就好了。

参考