高效学好设计模式的思维导图
设计模式
什么是设计模式?
通俗版
解决一再发生的问题的通用方案
专业版
是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
类图和语法差不多,如何快速识别代码属于哪个设计模式?
情景
问题-重复性问题-普遍性问题
解决方案
力的平衡:目标;约束
意图;动机
类图
角色-协作
描述-模式名称-共享词汇
关联模式
使用场景
优缺点
模式类目-创建-结构-行为
模式使用最佳实践
设计模式使用最佳实践
保持简单,避免过度设计
不要为了用而用模式
千万不要认为:如果没有使用模式解决某个问题,就不是经验丰富的开发人员
确信系统未来会发生改变和+有实际的需要再使用模式
如果只是假想的改变,不要使用模式
如果现在不需要模式,就别用
重构的时间大就是模式的时间
删除不需要的设计模式
不用设计模式不代表不能实现功能,设计模式容易实现更有弹性的设计
学习设计模式的重要性
开发人员之间共享词汇
模式背后的质量、特性、约束
更少的词汇做充分沟通
呆在设计圈子更久
开发团队快速充电
帮助初级开发人员迅速成长
阅读开源项目源码理解更容易
面试和考试频繁遇见
指导普通开发工程师
设计组件库和开发优秀的功能代码
架构师必备技能
设计目标
4大目标
维护性
扩展性
复用性
灵活性
其它
有弹性
健壮性/鲁棒性
面向对象
4大特性
抽象
封装
继承
多态
接口与抽象类的区别
接口和抽象类的区别.txt
面向对象 VS 面向过程
功能分解;隐错;责任
思考方式
概念;规约;实现
贫血型OO VS 充血型OO
设计模式最简UML
类图
类名、成员、方法、访问权限
B派生自A,A泛化了B
关联、聚合/聚集、组合/合成
依赖
关系强弱排序:组合>聚合>关联>依赖
注释符
交互图-时序图
对象:类名
时间轴、生命线、水平线调用
设计原则12个
封装变化-分开变化和不会变化的部分
高内聚、松耦合/低耦合、有弹性的设计
单一职责
引起变化的原因,只有1个
开闭原则
对扩展开放,对修改关闭
依赖倒置原则/针对接口编程/好莱坞原则
里氏替换原则
父类可以代替子类
合成/聚合复用原则
组合/委托优于继承
迪米特法则
/得墨忒耳法则
/最少知识原则
最小知识,朋友越少越好;降低成员访问权限
接口隔离原则
接口的方法高内聚
DRY原则
Don’t Repeat Yourself
保持简单原则
不要过度设计原则
阅读开源项目源码必须掌握的设计模式
工厂模式
模板模式
策略模式
代理模式
适配器
装饰模式
职责链模式
23种设计模式Gof
创建型6
解耦客户与需要实例化的对象
单例模式
简单工厂模式/静态工厂模式(不属于23种Gof设计模式)
工厂模式
抽象工厂模式
建造者模式/生成器模式
原型模式
结构型7
把类或对象组合到更大的结构中
代理模式
适配器模式
装饰着模式
门面模式/外观模式
桥接模式
组合模式
享元模式
行为型11
类和对象如何交互及分配职责
策略模式
观察者模式/发布-订阅模式
模板方法模式
职责链模式
迭代器模式
命令模式
状态模式
访问者模式
备忘录模式
解释器模式
中介者模式
设计模式组合
MVC模式=4个模式组合
观察者-模型是被观察者,共享多视图
策略模式-控制器是视图的行为
组合模式-视图-组合节点-叶节点
适配器模式-视图-模型-Android-DataAdapter
泛型+反射+工厂模式
模板方法模式+策略模式
字符串配置+反射+工厂模式
工厂模式+代理模式
工厂模式+策略模式
装饰者模式+访问者模式
迭代器模式+组合模式
命令模式+备忘录模式
书单
大话设计模式.pdf
图解设计模式_结城浩著_杨文轩译_2017.pdf
Head First设计模式_2007.pdf
设计模式之美_王铮.极客时间
设计模式_GoF.pdf
Java与模式_阎宏.pdf
Java设计模式_Steven John_张逸译_第2版_2012.pdf
设计模式解析_AlanShalloway_第2版.pdf
重构与模式_Joshua Kerievsky.pdf