前言
刚工作的时候,参与了一个代码量不算小的项目的开发,项目里的某些复杂的业务构造的十分优雅(责任明确,易于扩展)。 当时心里就疑惑负责这个模块的人是怎么想到这样来划分特定结构和构建它们的关系的,后面才了解到是使用了设计模式的思想。
工作多年跟不同的团队合作过,也看到一些难以维护的项目:
项目越改越乱,在代码堆里摸爬滚打,越加功能,模块越难维护。
在原有代码上增加功能,结果导致原有的功能出现bug......
了解一点设计模式,可以在一定程度上减轻这种情况,减少后续的坑
什么是设计模式
对于面向对象设计中的常见问题,被反复使用的一种代码设计经验,是经过实践验证的解决方案,能提高代码的可维护、可扩展性
我的理解:
核心还是开闭原则,开放扩展,关闭直接修改内部逻辑代码。
怎么样开放?
设计一套规则(协议),你新建的对象,只要符合我的规则,就可以作为逻辑的一部分,往里面加,扩展原来的功能,而不是直接修改原来的逻辑代码。直接改逻辑代码(出现很多if else),会导致越来越臃肿,同时改一处子逻辑导致其它逻辑出错。
23种设计模式
创建型模式:
- 工厂方法模式
- 抽象工厂模式
- 生成器模式
- 原型模式
- 单例模式
结构型模式:
- 适配器模式
- 桥接模式
- 组合模式
- 装饰模式
- 外观模式
- 享元模式
- 代理模式
行为模式:
- 责任链模式
- 命令模式
- 迭代模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 策略模式
- 模版方法模式
- 访问者模式
- 解释器模式
另外需要了解面向对象的六大设计原则 ,实际上设计模式也是遵循这些原则的具体实现
- 单一职责原则
- 里氏替换原则
- 依赖倒置原则
- 接口隔离原则
- 迪米特原则
- 开闭原则
个人建议
- 设计模式不是模版,不是直接套用的明确步骤,而是一种思想,根据自己的实际来确定特定步骤,同时也可以多个模式结合在一起用
- 不要为了用而用!