装饰器模式就是比较简单了,就是做装饰,其目的是在不改变原有类型/功能/对象的情况下,对其进行装饰,扩展,以达到公共强化和扩展的目的。
装饰模式的目的是在原有功能或者能力的基础上提供额外的更多的能力和特性,这一点和代理模式、复合模式是有很大不同的,了解每一种模式,重点是要了解这个模式的最初的设计者应用场景和其解决目的,以便加以利用。
Go语言借助于匿名组合和非入侵式接口可以很方便实现装饰模式。使用匿名组合,在装饰器中不必显式定义转调原对象方法。
现实生活中例子就太多了,可以想一下带 "装饰"的东西,车子不漂亮,搞个车贴,脸不好看,化个妆,屋墙不好看,贴个墙纸。
都是在在不改变原有东西的情况下,做一些扩展和强化。