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