转自:http://www.cnblogs.com/lzhlyle/p/4696645.html

如题,实际上,我想这是很困难的。

除非——只是为了给自己做一个提醒,能够看一眼就快速回想起该设计模式的种种记忆。

下列是我之前在学习《大话设计模式》时做的笔记总结,当中有部分措辞来自其作者程杰。(非常感谢他为神秘的设计模式搭建了如此平滑的学习通道)

1. 创建型:

(1)单例:只需一个实例时考虑。

(2)工厂方法:一般先用工厂方法解决对象创建问题。

(3)抽象工厂:当工厂方法无法满足多系列问题时,再重构为抽象工厂。

(4)建造者:多个部件的建造实现相同,只是所需部件、建造顺序不同时考虑。

(5)原型:在初始化信息不发生变化时考虑。

2. 结构型:

(1)适配器:让接口不相容的类能协同工作。(亡羊补牢)

(2)装饰:动态增加单个对象的额外职责,比生成子类更灵活。

(3)桥接:使继承关系更改为组合关系,使两者可独立变化。(未雨绸缪)

(4)组合:用树状结构表示“整体-部分”的层次关系,使单个对象(叶节点)与组合对象(枝节点)的使用具有一致性。

(5)享元:为运用共享技术,支持大量细粒度对象,节省开销。

(6)代理:控制对单个对象的访问。

(7)外观:子系统的高层接口,避免两个类直接关系的第三者。

3. 行为型:

(1)观察者:一对多依赖关系,一端变化、多端得到通知并自动更新。(目标与观察者可实现弱耦合)

(2)模板方法:继承+重写解决代码重复问题。

(3)命令:将请求发送者与具体实现者解耦,可对请求排列、取消、重做,支持事务。(多请求,单处理)

(4)职责链:将处理者排成链,沿链传递请求。(单请求,多处理)

(5)状态:当对象内状态改变而执行不同操作时考虑,状态转移逻辑不在if/switch中,而在各子类之间,增/改状态和状态转换较容易。

(6)解释器:若某特定问题发生的频率足够高时考虑,需定义文法表示与解释器本身。

(7)中介者:由中介封装一系列对象交互,减少对象间耦合,利于复用。(朋友多)

(8)访问者:当Element较稳定、Visitor易增加时考虑。(朋友在精不在多)

(9)策略:将一系列算法逐个封装并可相互替换,易于切换、理解、扩展。

(10)备忘录:不破坏封装,又要取该对象内状态,且要求状态还原时考虑。(保持封装边界)

(11)迭代器:将对集合的访问与遍历从集合对象中分离出来到迭代器中。

转载于:https://www.cnblogs.com/wdw31210/p/4699743.html

【转】一句话的设计模式相关推荐

  1. 一句话评论设计模式六大原则--转

    原则,故名思议则是本质的意思.所谓擒贼先擒王,研究设计模式自然要先了解设计原则,所有的模式都是在这些原则的基础之上发展起来的,有的是侧重一个,有的是多个都有所涉及.看完设计模式之后,我感觉到每个模式都 ...

  2. 一句话评论设计模式六大原则

    原则,故名思议则是本质的意思.所谓擒贼先擒王,研究设计 模式自然要先了解设计原则,所有的模式都是在这些原则的基础之上发展起来的,有的是侧重一个,有的是多个都有所涉及.看完设计模式之后,我感觉到每个模式 ...

  3. 一句话的设计模式(转)

    如题,实际上,我想这是很困难的. 除非--只是为了给自己做一个提醒,能够看一眼就快速回想起该设计模式的种种记忆. 下列是我之前在学习<大话设计模式>时做的笔记总结,当中有部分措辞来自其作者 ...

  4. 一句话总结设计模式-《大化设计模式》读书笔记

    设计模式并不是一种算法,而是一种思想,一种软件开发思想:这种思想便于开发的维护.扩展. 基于创建型 单例模式:通过锁机制或者单一加载机制,确保程序只创建一个对象. 工厂模式:将对象的实例化交给第三者- ...

  5. 一句话的设计模式(JAVA版)

    ·结构型模式: o适配器:用来把一个接口转化成另一个接口,如 java.util.Arrays#asList(). o桥接模式:这个模式将抽象和抽象操作的实现进行了解耦,这样使得抽象和实现可以独立地变 ...

  6. 大聪明教你学Java设计模式 | 总结篇:一句话总结设计模式

    前言

  7. 程序设计模式 —— 策略模式

    或许你听了之后会以为是一种策略选择方式,事实上 "策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化." 敬告 ...

  8. 花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘

    本文所有内容均节选自<设计模式就该这样学> 序言 Design Patterns: Elements of Reusable Object-Oriented Software(以下简称&l ...

  9. 还在愁不懂设计模式吗?看过来

    原文链接: http://47.93.55.72/2018/11/13/%E8%BF%98%E5%9C%A8%E6%84%81%E4%B8%8D%E6%87%82%E8%AE%BE%E8%AE%A1% ...

最新文章

  1. mastered skills
  2. Spring3 @ResponseBody注解引起头部Accept-Charset过大
  3. adobe photoshop cs5已停止工作
  4. html 循环_一个不被程序员认为是编程语言的语言——HTML,你怎么看?
  5. 实战!Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步!
  6. X Window Messing With The Mouse Cursor
  7. 亚马逊遭遇15万人联名抗议:AI刷脸可以,但卖给政府不OK
  8. 苹果修复被 XCSSET 恶意软件滥用的3个 0day
  9. linux之rsync远程同步文件
  10. FLASH右键菜单的应用
  11. Java Balking模式
  12. 用一套鼠标键盘控制两台或多台电脑
  13. 爬虫框架 Scrapy 详解
  14. mysql脏页处理方法_mysql脏页是什么
  15. html中图片以图片中心放大旋转,图片旋转放大居中
  16. python3使用蓝本Blueprint
  17. 在CENTOS 7上安装SNIPE-IT进行资产管理
  18. vehicle架构的想法
  19. 使用python从在线网页制作epub(selenium,ebooklib)
  20. 小技巧:使用谷歌地图查询公交和地铁信息

热门文章

  1. 前端vscode插件合集
  2. 安卓USB开发教程 三 USB Accessory
  3. [html] 页面的重绘和回流是什么?
  4. [html] 说说js代码写到html里还是单独写到js文件里哪个好?为什么?
  5. [css] 请使用css画一个圆,方法可以多种
  6. [css] 判断如下边框的颜色,并解释为什么[代码]?
  7. 工作281:时间戳转换问题
  8. 前端学习(2788):完成图片商品数据页面渲染
  9. “约见”面试官系列之常见面试题之第八十九篇之vue生命周期作用(建议收藏)
  10. 前端学习(2133):前端代码复杂带来的问题