go-pattern-examples/behavior/07_visitor/README.md
2020-05-04 16:41:42 +08:00

15 lines
1.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 访问者模式
访问者模式常常1对N的情况处理用于将数据结构和操作进行分离访问者模式侧重Visitor一侧而不是被访问的一侧可以方便的增加很多访问者而是不是增加更多的访问对象.
访问者模式的目的是为了解耦对象和对象的使用和处理逻辑,一边提供资源,一边使用,也可以说是解耦生产出来的产品和产品消费者,同样用于分离操作的还有策略模式(strategy pattern),但两者存在侧重点不同.
一个石油的例子油田提供石油不同的客户将石油用到不同的地方可能用于生产武器可能用于提纯材料生产服装也可能只是用于只是用于提供动力这些客户就是石油的不同visitor.
客户买石油的时候都要遵循油田的购买方式否则就不卖给你这个特定的购买方式就是指Visitor模式中常说的Accept方法。
打游戏是个不错的例子。
玩家角色需要跟NPC其他玩家以及游戏环境交换这些都是Visit的过程.