桥接模式

桥接模式

一、什么是桥接模式?

桥接模式(Bridge Design Pattern):将抽象与实现解耦,让他们能够独立变化。

或者,桥接模式就是将类的功能层次结构和类的实现层次结构分离开来,降低它们的耦合度。

抽象,即类的功能层次结构,采用的是继承的方式。

实现,即类的实现层次结构,采用的是组合的方式。

 代理模式

代理模式

一、什么代理模式?

代理模式(Proxy Design Pattern):在不改变原始类(被代理类)的情况下,对它进行功能的增强。

代理模式有几个特点:

  • 不会改变原始类(被代理类)
  • 核心功能还是由原始类(被代理类)实现
  • 代理类只负责增强的那部分功能

代理,就是帮别人做事情,核心工作还是由被代理人做,但是其他琐碎的事则可以交给代理人。

 访问者模式

访问者模式

一、什么是访问者模式?

访问者模式(Visitor Design Patten):将作用于数据结构中的操作分离出来,形成单独的操作类,这样就可以在不改变数据结构的情况下,扩展出新的操作。

它将数据结构与数据处理分离开来,保持数据结构不变,而允许扩展新的处理。

 状态模式

状态模式

一、什么是状态模式?

状态模式(State Design Pattern):对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。

通常情况下,状态只作为数据,而不是对象,它只在对象之间进行流转,是对象之间数据交流的一种方式。

状态模式,则是将状态也当成是一个对象,赋予它数据和行为动作,它的数据就是状态,行为动作就是状态转换。

 观察者模式

观察者模式

一、什么是观察者模式?

观察者模式(Observer Design Pattern):多个对象之间存在一对多的关系,当一个对象的状态发生改变时,所有其他依赖的对象都会收到通知。

观察者模式也被称为发布-订阅模式。

负责通知其他依赖对象称为被观察者,被通知的对象称为观察者。

在现实中,对象之间总是存在依赖关系的,一个对象的状态改变,往往会影响到其他的依赖对象。

 解释器模式

解释器模式

一、什么是解释器模式?

解释器模式(Interpreter Design Pattern):对具有某种语法规则的语言表示,定义一个解释器来处理这个语法

Interpreter pattern is used to defines a grammatical representation for a language and provides an interpreter to deal with this grammar.

解释器模式的一些特点:

  • 存在某种语法规则,比如算术运算表达式,中英文翻译等
  • 语法规则可能会出现循环、递归
  • 解释器模式就是根据语法规则去解读“句子”

 命令模式

命令模式

一、什么是命令模式?

命令模式(Command Design Pattern):将请求封装为一个对象,使得发出请求的责任和执行请求的责任分割开。

命令有时也可以称为事件,比如点击鼠标、按下键盘等事件,通常会将它们封装成一个事件对象,然后按顺序放入队列中,再逐个去处理它们。

 享元模式

享元模式

一、享元模式是什么?

享元设计模式(FlyWeight Design Pattern):通过共享已有实例,来避免创建新的实例,减少空间消耗,提高资源利用率

享元,意思就是共享的对象、单元、元素等。

 门面模式

门面模式

一、什么门面模式?

门面模式(Facade Design Pattern):为子系统提供一组统一的接口,定义一组高层接口让系统更加易用。

二、接口设计存在什么问题?

  • 接口粒度过小时,接口的易用性就会变低,需要调用多个接口才能完成一件事

  • 接口粒度过大时,可复用性就会变低,需要针对不同业务需求实现不同的接口,导致接口无限膨胀

  • 当一个系统的功能越来越强,子系统会越来越多,对子系统的访问也变得越来越复杂

 装饰器模式

装饰器模式

一、什么是装饰器模式?

装饰器(Decorator)模式:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。

在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等,都是装饰器模式。