设计模式相关知识

计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。
1995 年,GoF(Gang of Four)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式。

滴滴滴

  • 设计模式
  • 设计原则

1. 设计模式

1. 设计模式23 种设计模式的分类。

范围\目的 创建型模式 结构型模式 行为型模式
类模式 工厂方法 (类)适配器 模版方法、解释器
策略
代理 命令
单例 (对象)适配器 责任链
原型 桥接 状态
对象模式 抽象工厂 装饰 观察者
建造者 外观 中介者
享元 迭代器
组合 访问者
备忘录
1. 单例(Singleton)模式
2. 原型(Prototype)模式
3. 工厂方法(Factory Method)模式
4. 抽象工厂(AbstractFactory)模式
5. 建造者(Builder)模式
6. 代理(Proxy)模式
7. 适配器(Adapter)模式
8. 桥接(Bridge)模式
9. 装饰(Decorator)模式
10. 外观(Facade)模式
11. 享元(Flyweight)模式
12. 组合(Composite)模式
13. 模板方法(TemplateMethod)模式
14. 策略(Strategy)模式
15. 命令(Command)模式
16. 职责链(Chain of Responsibility)模式
17. 状态(State)模式
18. 观察者(Observer)模式
19. 中介者(Mediator)模式
20. 迭代器(Iterator)模式
21. 访问者(Visitor)模式
22. 备忘录(Memento)模式
23. 解释器(Interpreter)模式

1. 单例(Singleton)模式

某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。

2. 原型(Prototype)模式

将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。

3. 工厂方法(Factory Method)模式

定义一个用于创建产品的接口,由子类决定生产什么产品。

4. 抽象工厂(AbstractFactory)模式

提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。

5. 建造者(Builder)模式

将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。

6. 代理(Proxy)模式

为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。

7. 适配器(Adapter)模式

将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

8. 桥接(Bridge)模式

将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

9. 装饰(Decorator)模式

动态的给对象增加一些职责,即增加其额外的功能。

10. 外观(Facade)模式

为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。

11. 享元(Flyweight)模式

运用共享技术来有效地支持大量细粒度对象的复用。

12. 组合(Composite)模式

将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。

13. 模板方法(TemplateMethod)模式

定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

14. 策略(Strategy)模式

定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。

15. 命令(Command)模式

将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。

16. 职责链(Chain of Responsibility)模式

把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。

17. 状态(State)模式

允许一个对象在其内部状态发生改变时改变其行为能力。

18. 观察者(Observer)模式

多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。

19. 中介者(Mediator)模式

定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。

20. 迭代器(Iterator)模式

提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。

21. 访问者(Visitor)模式

在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。

22. 备忘录(Memento)模式

在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。

23. 解释器(Interpreter)模式

提供如何定义语言的文法,以及对语言句子的解释方法,即解释器。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • javascript设计模式与开发实践 设计模式 每个设计模式我们需要从三点问题入手: 定义 作用 用法与实现 单...
    穿牛仔裤的蚊子阅读 4,027评论 0 13
  • 创建型模式 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设...
    liuyang7519阅读 318评论 0 2
  • 创建型模式 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设...
    隔墙送来秋千影阅读 2,638评论 0 11
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,076评论 1 32
  • 0.提前说明 模式选择的方法1)模式的功能——看是否能解决问题2)模式的本质——看模式是否主要用来解决这类问题3)...
    王侦阅读 1,029评论 0 1