重学设计模式(一)之读《Head First 设计模式》
2018-12-14 本文已影响3人
LY丶Smile
前言
最近重新学习了下设计模式,用了几天把几位大佬的《Head First 设计模式》读了一遍,整理了下读书笔记,作为设计模式学习的一个大纲,为持续学习做个指导。
以前读设计模式的时候,实践经验比较少,所以理解不是很透彻。这次重读,结合自己的实践经验,给人的启发性就大了很多。
PS:此篇文章只是一个大纲
大佬箴言
- 如果没有类实现某个接口,那么此接口的存在就没有意义
- 在我们的设计中,应该允许行为可以被扩展,而无需修改现有的代码
- 在OO设计的过程中,折衷一直是免不了的
- 模式是用来解决一个经常性重复发生的设计问题(模式必须应用于一个重复出现的问题)
- 模式不是法律或准则,模式只是指导方针
- 设计时,尽可能地用最简单的方式解决问题
- 系统已经非常复杂了,而且并不需要预留任何弹性的时候,就不要使用模式
- 过度使用设计模式可能导致代码被过度工程化,模式是工具而不是规划,需要被适当地调整以符合你的需求
- 在设计前期使用模式常常导致过度工程
学习知识,绝对禁止的一件事就是照搬,学了设计模式也只是多了一些解决问题的指导思想,是一把钥匙,而不是一种绝对的解决方案。
设计原则
- 封装变化
- 多用组合,少用继承
- 针对接口编程,不针对实现编程
- 为交互对象之间的松耦合设计而努力
- 类应该对扩展开放,对修改关闭
- 依赖倒置原则:依赖抽象,不依赖具体类
- 最少知识原则:只和朋友交谈(减少对象之间的交互)
- 好莱坞原则:别找我,我会找你
- 类应该只有一个改变的理由
全书大纲
此处是整理的一个思维导图,还不是很完善,持续更新中……(简书貌似不支持文件上传?)
- 观察者模式
- 装饰者模式
- 工厂模式
- 单件模式
- 命令模式
- 适配器与外观模式
- 模板方法模式
- 迭代与组合器模式
- 状态模式
- 策略模式
- 代理模式
-
其他模式
Head First 设计模式.jpg