Aha!设计模式(105)-访问者模式(1)

网友投稿 262 2022-09-19

Aha!设计模式(105)-访问者模式(1)

意图

将作用于某个数据结构中的各个元素的操作集合成一个操作类。这样当需要扩展对数据结构中元素的操作时只需扩展操作类而不是修改数据结构中的操作对象类本身。

动机

考虑一个使用组合模式形成的树状数据结构。使用组合模式的一个好处就是可以以透明的方式增加对于整个数据结构中每个要素的操作。实现方式非常简单,就是在组合类Composite中准备一个相同的方法,在这个方法中调用每个子要素的对应方法。

def reset_connections(self, memo): Component.reset_connections(self, memo) for child in self.iter(): child.reset_connections(memo)

这种方式真的很好用,至少在最初使用这种方法增加功能时设计者一定是这样认为的。但是随着使用次数的增多,设计者早晚会发现:每次都是同样的结构,稍微换一下操作的内容就变成了另外一个功能。

这种重复性往好的方向看可以说是使用同样的方式解决了不同的问题,降低了增加新功能的难度,这当然没有错。但是从另一个角度来说,毕竟增加功能时修改了已有的代码。是不是可以在不修改已有代码的情况下,增加新功能呢?

同样的结构就是这个问题的突破口,而访问者模式就是这个问题的解决之策。

觉得本文有帮助?请分享给更多人。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Aha!设计模式(103)-策略模式(2)
下一篇:Tkinter编程应知应会(9)-简易计算器(含源代码链接)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~