无废话C#设计模式之二十:Mediator
2009-04-02 08:22:59 来源:WEB开发网核心提示: 代码执行结果如下图:代码说明l AccountSystem是一个中介者角色,它负责各个同事类之间的交互,无废话C#设计模式之二十:Mediator(3),要使同事对象参与它的管理,就需要在内部维护一个同事对象的列表,或者会发生变动可以考虑引入中介者模式,实现要点l 在C#中可以适用dele
代码执行结果如下图:
代码说明
l AccountSystem是一个中介者角色,它负责各个同事类之间的交互。要使同事对象参与它的管理,就需要在内部维护一个同事对象的列表。
l 我们看到,AccountSystem的注册、充值和消费方法会遍历相关的同事对象并且调用它们的专有方法进行操作。在全部操作完成之后,它才会更新自己的账户。
l GameSystem是一个抽象同事。充值和消费方法都有两种。一种是给外部调用的充值和消费方法,一种是给外部调用的,另外一种是给AccountSystem调用的。在对外的方法中,GameSystem仅仅是把这个请求转发给中介者,它自己不做实质性的操作,而在xxxSelf()方法中才做真正的充值、消费操作。
l GameArea1和GameArea2是具体同事,调用父类构造方法来和中介者关联。
l 中介者模式的特点就是同事自己意识到它需要和一个中介者关联,而在实际的操作过程中,它们只是负责和中介者通讯并且接受中介者的请求,而不再和其它同事发生直接的关联。
何时采用
如果一组接口相对稳定(如果GameArea1和GameArea2的充值方法定义不一样,那么AccountSystem就有点晕眩了)的对象之间的依赖关系错综复杂,依赖关系难以维护,或者会发生变动可以考虑引入中介者模式。
实现要点
l 在C#中可以适用delegate关联中介者和各同事之间的交互行为,这样各同事就不需要直接和中介者进行耦合。
更多精彩
赞助商链接