WEB开发网
开发学院软件开发C语言 无废话C#设计模式之二十:Mediator 阅读

无废话C#设计模式之二十:Mediator

 2009-04-02 08:22:59 来源:WEB开发网   
核心提示:意图 用一个中介对象来封装一系列对象的交互,中介者使得各对象不需要显式相互引用,无废话C#设计模式之二十:Mediator,从而使其松散耦合,而且可以独立地改变它们之间的交互,它们所有的行为都提交到一个统一的地方(假设它是AccountSystem)去处理,这么做有几个好处:l 各大区不需要关心还有哪些其它的大区,场景

意图

用一个中介对象来封装一系列对象的交互。中介者使得各对象不需要显式相互引用,从而使其松散耦合,而且可以独立地改变它们之间的交互。

场景

我们知道,一个网络游戏往往有很多大区。每一个大区可以是一组服务器,也可以是多组服务器,在这里假设一个大区是一组服务器。为了效率,一般每个大区都会有一个数据库,玩家的创建角色、充值、消费行为只是在这一个大区中有效。现在公司有了新的需求,那就是玩家的一些信息能在多个大区中共享。比如,在注册的时候就把玩家的账户信息写入多个信息共享的大区,玩家在某个大区中充值需要“通知”其它大区修改账户余额,玩家在某个大区中消费也需要“通知”其它大区修改账户余额。

如果我们现在有ABC三个大区,下面的方法可以实现需求:

l         网站的注册方法调用A、B和C大区的注册方法

l         A大区的充值方法调用B和C的充值方法

l         B大区的充值方法调用A和C的充值方法

l         C大区的充值方法调用A和B的充值方法

l         A大区的消费方法调用B和C的充值方法

l         B大区的消费方法调用A和C的充值方法

l         C大区的消费方法调用A和B的充值方法

我想,没有人会这么做吧。你肯定会想到在一个统一的地方去维护所有大区的信息,任何一个大区的行为不直接和其它大区的行为关联,它们所有的行为都提交到一个统一的地方(假设它是AccountSystem)去处理。这么做有几个好处:

l         各大区不需要关心还有哪些其它的大区,它只直接和AccountSystem对话。

1 2 3 4 5  下一页

Tags:废话 设计模式 二十

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接