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

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

待续更新

你可能感兴趣的:(一句话说清楚设计模式的概念与总结)