代理模式的使用场景: 多个对象之间有相互依赖关系,为了解决错综复杂的关系,
需要创建个中介者对象来管理他们之间的依赖关系。
场景
比如创建个泡泡堂游戏,4v4对战,分别为红方和蓝方,每一方中的每个队员胜利
或失败,都要通知到其他队员,一方人员全部失败,则表示全队阵亡。
代码:
1 |
|
在这个案例中,playerDirector
是中介对象,负责管理双方队员对象的信息,它内部有2个私有属性,
分别是player玩家对象和operation操作对象。
- player通过
key-value
的方式表示红队和蓝队,每个队的队员放到数组中,
1 |
|
- operation中包含了中介者对象的一些操作方法,并对外暴露一个receiveMessage接口来调用
内部方法。
1 | var receiveMessage = function () { |
这样实现起来,对象之间的逻辑关系就比较清晰。所有操作就都由playerDirector来管理。
总结
中介者模式的核心概念是让对象与对象之间尽可能的理清关系,一个对象的改变不会影响到其他对象。把他们之间的逻辑关系交给中介者对象
来处理。不过缺点就是中介者对象会越来越庞大臃肿。