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

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

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

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)迭代器:将对集合的访问与遍历从集合对象中分离出来到迭代器中。

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

一句话的设计模式(转)相关推荐

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

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

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

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

  3. 【转】一句话的设计模式

    转自:http://www.cnblogs.com/lzhlyle/p/4696645.html 如题,实际上,我想这是很困难的. 除非--只是为了给自己做一个提醒,能够看一眼就快速回想起该设计模式的 ...

  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. SVM算法在项目实践中的应用!
  2. Amazon Aurora是如何设计原生云关系型数据库的?
  3. Bitcoin 地址原理(2)私钥、公钥、地址基本概念
  4. BAT资深算法工程师《深度学习》读书分享:概率和信息论
  5. SSM整合之纯注解方式,注解实现事务,异常,与拦截器
  6. 爬虫 404 try_Python爬虫MOOC笔记
  7. 中科大快手提出多模态交叉注意力模型:MMCA,促进图像-文本多模态匹配!
  8. java 取商_Java读取word文档,转换为网页
  9. python读取excel绘图y轴设置_python读取并定位excel数据坐标系详解
  10. SAP中检查货币代码
  11. MATLAB 产生线性调频信号
  12. python实现空气焓值,湿球温度的计算
  13. 笔记本计算机风扇声音大怎么办,教你怎么从解决笔记本风扇狂转、噪音过大!-电脑风扇声音大怎么办...
  14. 树莓派系统最小img镜像的制作-备份与还原
  15. 简明扼要:numpy.random.seed()用法
  16. 语法基础——C语法基础
  17. Day53 Linux setitimer函数 信号集操作函数 信号捕捉 SIGCHLD信号
  18. 方案设计阶段的准备工作
  19. 黑苹果在线安装版本安装教程
  20. js中数组和字符串的常用方法

热门文章

  1. numpy数组切片:一维/二维/数组
  2. ISP【三】———— raw读取、不同格式图片差异
  3. 尺度空间理论与图像金字塔(二)
  4. Datalist控件,Repeater控件如何分页?
  5. 获得汉字字符串拼音首字母
  6. 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
  7. RANSAC鲁棒参数估计
  8. 【Go】Go基础(九):接口(Interfaces)与反射(reflection)
  9. 【linux】shell中浮点数运算的加、减、乘、除
  10. Ruby DSL介绍及其在测试数据构造中的使用(1)