架构师训练营第三周感悟
1.本周训练营具体讲了组合模式,来使用在树形结构的业务场景中,比如公司的组织架构、部门层级、window窗口组件等。
就像智慧老师说的,不同设计模式在代码结构上很像,比如组合模式和观察者模式,都是依赖于list——观察者模式中在被观察者中添加观察者list,通知时遍历list分别调用listener的notify接口;而组合模式中的list对象是整体的一个元素组合,元素和整体实现同一个接口,本质上属于同一类型对象。
观察者模式和装饰者模式虽然代码上差别很大,但是个人感觉从语义层面两者很相似。装饰者模式从外进行层层包装,包装着和被包装者实现同样的接口,本质上也属于同一类型的对象,才能实现层层嵌套,从这个纬度,装饰者是不是可以理解成组合模式的一个特例?从网上搜资料,异同点在于“组合对象并不修改方法调用,其着眼在点于组织子对象。而装饰者模式存在的唯一目的就是修改方法调用而不是组织子对象,因为子对象只有一个。”
2.智慧老师最后举例intel的语法转换树的transformer使用装饰器模式实现,个人感觉有些牵强。虽然是类似于filter责任链方式来进行语法转换,但是针对一个语法结构真正起作用的只有一个transformer。所以没有感觉到装饰者模式在其中起的作用。
评论