一句话说清楚设计模式的概念与总结

设计模式一共有23种,一般会分为三大类

创建模式 (7种)

创建模式是对类的实例化过程的抽象化。系统在创建对象时,需要动态地决定怎样创建对象,创建哪些对象以及如何组合和表示这些对象,创建型模式就是描述怎么创建这些对象地过程。

分为类的创建模式和对象的创建模式:

  1. 类的创建模式使用继承的方式,把类的创建延迟到子类,从而封装客户端得到哪些具体类的信息。

  2. 对象的创建模式则把对象创建的过程动态地委派给另一个对象,从而动态地决定客户端将得到哪些具体类地实例,以及这些类地实例如何组合在一起。

具体包括如下:

  1. 简单工厂模式,属于类的创建模式,又叫做静态工厂方法模式,由一个工厂对象决定创建出哪一种产品的实例。

  2. 工厂方法模式,类的创建模式,用意是定义一个创建产品对象的工厂接口,将实际创建工作延迟到子类中。

  3. 抽象工厂模式,这是对象的创建模式,做法是向客户端提供一个接口,使得客户端不必指定产品的具体类型的情况下,创建多个产品族中的产品对象。
    https://www.jianshu.com/p/a1078d3dbbe6

  4. 单例模式,作为对象的创建模式,单例模式可以确保某一个只会有一个对象实例,在整个jvm中,并且自行实例化并向整个系统提供这个实例。
    https://www.jianshu.com/p/f16fa8246bbe

  5. 多例模式,多例模式就是指有多个实例,同时类必须自己创建以及管理这些实例,并且向外部提供。

  6. 建造模式,是对象的创建模式,建造模式可以将一个产品的内部表象与产品的生成过程分割开,从而使建造的过程可以生成具有不同的内部表象的产品对象。(理解,产品的内部有不同的零件,不同人建造的生成的产品内部的零件结构可能不同,而外部是通一个产品)

  7. 原始模型模式,属于对象的创建模式。通过给出一个原型对象来指明要创建的对象类型,然后复制这个原型对象的方法创建出更多同类型的对象。(不要被概念迷惑,就是深克隆与浅克隆)。

结构模式

结构模式描述如何将类或者对象结合在一起,形成更大的结构。同样分成两个种:

  1. 类的结构模式,使用继承来把类、接口等组合在一起,已形成更大的结构,这是静态的,例如适配器。

  2. 对象的结构模式, 描述怎样把各种不同的类型的对象组合在一起,以实现新的功能的方法,这是动态的。

种类:

  1. 适配器模式,把一个类的接口转换成客户端所期待的另一种接口,从而因接口不匹配而无法在一起工作的两个类能够在一起工作。(同样分为类的适配器模式和对象的适配器模式)
    https://www.jianshu.com/p/06f2473a71ef
  2. 缺省适配模式,作为一个接口提供缺省实现,这样子类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。
    https://www.jianshu.com/p/025876dff370
  3. 合成模式,属于对象的结构模式,有时也叫整体与部分模式,把对象组织到树结构中,主要用来描述整体与对象之间的关系,让客户端将整体与对象等同看代。

4.装饰模式(Decorator),又叫包装模式,是对象的结构模式。装饰模式以对客户端透明的方式将一个对象的功能加以扩展,装饰模式以功能的扩展提供了除继承方法之外的另一个可选的方案。

https://www.jianshu.com/p/10a77d91c93f

5.代理模式,是对象的结构模式,代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。分为静态代理和动态代理。
https://www.jianshu.com/p/bee8a547faa3

  1. 享元模式,是对象的结构模式,以共享的方式高效的支持大量的细粒度对象。

7.门面模式,门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行处理,这就是门店模式,门面模式提供一个更高层次的接口,使得子系统更易于使用

8.桥梁模式,是对象的结构模式,又称为接口模式。桥梁模式将抽象化与实现化脱耦,使得两者可以独立的变化。

行为模式

行为模式是对不同对象之间划分责任和算法的抽象化。

  1. 类的行为模式
    类的行为模式使用继承关系在几个类之间分配行为。

  2. 对象的行为模式,使用对象的聚合来分配行为。

分类

  1. 不变模式,一个对象的状态在创建之后就不再变化,这就是不变模式。

  2. 策略模式,属于对象的行为模式,主要的用法是使用一组算法的时候,将每一个算法分装到每一个独立的具体类中。这些具体类具有共同的接口,从而是他们可以互换。该模式主要用于算法相关,使得算法可以不影响客户端的情况下发生变化。
    具体连接如下:https://www.jianshu.com/p/8970ae1077f6

3.模板方法模式,是类的行为模式,准备一个抽象类,将部分逻辑以具体的方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类继续实现剩下的逻辑,不同的子类可以以不同的方式实现这些方法,从而对生与的逻辑有不同的实现,这就是模板方法模式。(并发中lock的源码,AQS获取锁时,已经有固定的部分逻辑了,我门需要使用时,可以继承该接口,重写抽象方法,来做出不同的实现)。

4.观察者模式
观察者模式是对对象的行为模式,又叫做发布订阅模式,等等。
定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有的观察者对象,是他们自动更新自己的某些状态。
https://www.jianshu.com/p/985d78141843

  1. 迭代子模式
    迭代子可以顺序的访问同一个聚集中的元素,而不必暴露其内部表象。

  2. 责任链模式,这是一种对象的行为模式,在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链,请求会在这个链上传递,直到链上的某一个对象决定处理该请求,我的理解就是每个对象都存在自己不同的责任针对这个请求执行必须要处理。发出这个请求的客户端不需要知道链上的哪一个对象最终处理这个请求,使得系统可以在不影响客户的情况下动态地重新组织链和分配责任。

  3. 命令模式
    命令模式是属于对象的行为模式,命令模式又称为行动模式或者交易模式,把一个请求或者操作封装到一个对象中,命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

  4. 备忘录模式,又叫做快照模式,是对象的行为模式,备忘录模式的用以是:在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化存储起来,从而可以在合适的时机把这个对象还原到原来的状态。

  5. 状态模式,又称为状态对象模式,是对象的行为模式。
    状态模式允许一个对象在内部状态改变的时候改变其行为,这个对象看上去像是改变了他的类一样。

  6. 访问者模式
    访问者模式是对象的行为模式,目的是封装一些施加于某种数据结构元素之上的操作,一旦这些操作需要修改的话,接收这个操作的数据结构可以保持不变。

11.解释器模式,是类的行为模式,给的一个语言之后解释器可以定义其文法的一种表示,并同时提供一个解释,客户端可以使用这个解释来解释这个语言中的例子。

12.调停者模式,这是对象的行为模式,包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用,从而使他们可以较松散地耦合,当这些对象中地某些对象之间相互发生作用时,不会影响到其他地一些对象之间地相互作用,从而保证这些相互作用可以彼此独立地变化。

待续更新

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

推荐阅读更多精彩内容