【发布时间】:2018-06-14 17:52:52
【问题描述】:
我使用了给定 here 的访客示例,我们有这个:
.------------------------.
| Flower |
+------------------------+
| +accept(visitor) |
| +pollinate(pollinator) |
| +eat(eater) |
'------------------------'
我们还有一个Bug 和一个Bee 可以pollinate 一个Flower 和一个Predator 可以eat 一朵花。
使用 vistor 模式我可以这样写:
bee = Bee()
fly = Fly()
worm = Worm()
# Using the visitor pattern:
for flower in flowerGen(10):
for object in [bee, fly, worm]:
flower.accept(object)
但是代码在没有访问者的情况下是可读的和功能性的:
# Without visitor pattern
for flower in flowerGen(10):
for object in [bee, fly, worm]:
object.visit(flower)
问题是,这个例子中的访问者模式有什么优势?
【问题讨论】:
标签: python design-patterns visitor-pattern