学好设计模式的思维导图
设计模式
什么是设计模式?
通俗版
解决一再发生的问题的通用方案
专业版
是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
类图和语法差不多,如何快速识别代码属于哪个设计模式?
情景
问题-重复性问题-普遍性问题
解决方案
力的平衡:目标;约束
意图;动机
类图
角色-协作
描述-模式名称-共享词汇
关联模式
使用场景
优缺点
模式类目-创建-结构-行为
模式使用最佳实践
设计模式使用最佳实践
保持简单,避免过度设计
不要为了用而用模式
千万不要认为:如果没有使用模式解决某个问题,就不是经验丰富的开发人员
确信系统未来会发生改变和+有实际的需要再使用模式
如果只是假想的改变,不要使用模式
如果现在不需要模式,就别用
重构的时间大就是模式的时间
删除不需要的设计模式
不用设计模式不代表不能实现功能,设计模式容易实现更有弹性的设计
学习设计模式的重要性
开发人员之间共享词汇
模式背后的质量、特性、约束
更少的词汇做充分沟通
呆在设计圈子更久
开发团队快速充电
帮助初级开发人员迅速成长
阅读开源项目源码理解更容易
面试和考试频繁遇见
指导普通开发工程师
设计组件库和开发优秀的功能代码
架构师必备技能
设计目标
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
学好设计模式的思维导图相关推荐
- 15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码)
前言 设计模式是一个程序员进阶高级的必备技巧,也是评判一个工程师工作经验和能力的试金石.设计模式是程序员多年工作经验的凝练和总结,能更大限度的优化代码以及对已有代码的合理重构.作为一名合格的前端工程师 ...
- go设计模式思维导图
go设计模式思维导图
- 设计模式(Design Pattern)详细整理(含思维导图)
设计模式(Design Pattern) 设计模式(Design pattern)代表了最佳的实践,是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发人员经过相当长的一 ...
- 项目管理大法归档 - 思维导图、原型工具、接口测试、设计模式、版本管理、单元测试、持续集成、代码审查、Bug 跟踪
项目管理大法归档 - 思维导图.原型工具.接口测试.设计模式.版本管理.单元测试.持续集成.代码审查.Bug 跟踪 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) ...
- 零基础如何学好简笔画?—我用思维导图告诉你!
零基础如何学好简笔画? 思维导图应该怎么画? BY:铃铛子 下面我将从看.思.画三个角度来说明--零基础如何画好简笔画. 1.画出中心图. 1 2.画出标题,标题环绕中心图,为一体. 2 3.写出关键 ...
- 票务系统思维导图_最全思维导图分享,告诉你如何系统的学好软件测试。
用一张图告诉你软件测如何学,如何系统的学,如何学得更好.全篇干货,值得收藏,希望可以帮到大家. 开始分享之前,先发个牢骚,经常看到有人在讲软件测试简单,我就呵呵了,不懂就别乱下结论,真正能把软件测试给 ...
- 地理防灾减灾思维导图_17张思维导图,让你轻松学好高中地理必修一
高中地理必修一是整个高中教学的难点和重点,对于自然地理的学习,大家可能会感觉头疼,因为过于抽象的空间和思维.但这块"硬骨头"必须啃下来,因为必修一的知识,对于后期的学习起到至关重要 ...
- 设计模式—适配器模式(思维导图)
建议将思维导图保存下来观看,或点击这里在线观看
- 设计模式——代理模式(思维导图)
建议将思维导图保存下来观看,或点击这里在线观看
最新文章
- 关于CSS的长度单位及颜色表示
- 实习生笔试面试题总结
- TCP与UDP之间的区别
- 活动目录从入门到精通
- 120分的转录组试题,你能得多少
- 自定义标题栏右键菜单
- javaweb 初学建议
- Openstack虚拟机实例备份方案测试
- 本人出版《Java Web 项目开发案例实战—Spring Boot+Mybatis+Hibernate+Spring Cloud》
- 修改SAP下载文件路径
- 字体大宝库:40套为网页设计师准备的时尚字体(下篇)
- 0到1认识计算机:通俗讲解计算机工作原理
- html背景图片加载慢,javascript – 如何加快我网站的背景图片加载速度?
- 使用 ESP-Prog / Jlink 进行 JTAG 调试时的常见错误及解决办法
- 华为开发者大会主题演讲:3D建模服务让内容高效生产
- line-height绝对值和相对值的区别
- Google Chrome 中国官网最新版离线安装包下载地址
- Java毕设项目-OA办公系统
- 关于global_step参数
- 编写程序,输入一个字符,若是大写字母,转换成小写字母,若是小写字母,则转换成大写字母输出。
热门文章
- 高龄白菜java学习第八十九天(java数据结构和算法(10))
- java面试题题库大全800题
- EasyDSS如何利用集群部署实现AR直播大码率高存储传输需求?
- 上海宝付风雨无阻 宝付支付之路的劈波斩浪
- Mask Scoring R-CNN论文阅读
- 手把手教学Linux下oracle11g自动化安装脚本编写
- TextView的走马灯效果
- 【计算机网络大题】一个自治系统有6个局域网,其连接图如下图所示。LAN1至LAN6上的主机数分别为:10、12、240、110、50和20台。该自治系统分配到的IP地址为161.26.118.0/23
- 球半足球分析,竞彩瑞典超:马尔默VS赫尔辛堡 06月28日
- 【论文合集】RGBD Semantic Segmentation