设计模式之美学习笔记21: DRY原则
2019-12-20
今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第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原则也是一个指导方针型原则。 张无忌学太极拳,忘记就好了。