结构型模式(二) | 青训营

86 阅读2分钟

本系列笔记总结23种设计模式在GO语言中的实现方法,参考了refactoringguru.cn/design-patt… 网站的内容,也包括我自己的理解。如果有理解不对的地方,恳请批评指正。

结构型模式

结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。

结构型模式总共有七种:

  1. 适配器模式
  2. 桥接模式
  3. 代理模式
  4. 享元模式
  5. 装饰模式
  6. 外观模式
  7. 组合模式

这篇讲一下比较相似的装饰模式、代理模式

装饰模式

装饰模式的意义是在不改变原代码的情况下增强某个类,为其绑定新的行为。

传入某个类型的结构体,在装饰器中运行部分代码后返回同一类型的结构体。

这样在不改变类型的情况下增强了类,装饰模式可以重复嵌套不同的多个装饰器,因为装饰模式没有改变数据类型。

有点像俄罗斯套娃。

代理模式

代理模式有点像GIN的中间件,可以在访问类的前后做出一些操作处理。

代理模式和装饰模式有着相似的结构, 但是其意图却非常不同。 这两个模式的构建都基于组合原则, 也就是说一个对象应该将部分工作委派给另一个对象。 两者之间的不同之处在于代理通常自行管理其服务对象的生命周期, 而装饰的生成则总是由客户端进行控制。

与这两种模式相似的还有外观模式,留到下一次再讲。

以上是我的一点简单理解,如果有不对的地方,还望多多指正!