本系列笔记总结23种设计模式在GO语言中的实现方法,参考了refactoringguru.cn/design-patt… 网站的内容,也包括我自己的理解。如果有理解不对的地方,恳请批评指正。
结构型模式
结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
结构型模式总共有七种:
- 适配器模式
- 桥接模式
- 代理模式
- 享元模式
- 装饰模式
- 外观模式
- 组合模式
这篇讲一下比较相似的装饰模式、代理模式
装饰模式
装饰模式的意义是在不改变原代码的情况下增强某个类,为其绑定新的行为。
传入某个类型的结构体,在装饰器中运行部分代码后返回同一类型的结构体。
这样在不改变类型的情况下增强了类,装饰模式可以重复嵌套不同的多个装饰器,因为装饰模式没有改变数据类型。
有点像俄罗斯套娃。
代理模式
代理模式有点像GIN的中间件,可以在访问类的前后做出一些操作处理。
代理模式和装饰模式有着相似的结构, 但是其意图却非常不同。 这两个模式的构建都基于组合原则, 也就是说一个对象应该将部分工作委派给另一个对象。 两者之间的不同之处在于代理通常自行管理其服务对象的生命周期, 而装饰的生成则总是由客户端进行控制。
与这两种模式相似的还有外观模式,留到下一次再讲。
以上是我的一点简单理解,如果有不对的地方,还望多多指正!