【设计模式】中介者模式

来源:互联网 发布:淘宝废铁战士的时光机 编辑:程序博客网 时间:2024/05/24 05:05

以下属于菜鸟个人感悟,如有错误还请见谅。

文章参考《Android源码和设计模式解析与实战》


解决问题:


    协调多个类对象,做出最终决定的类我们称之为中介者。将多对多的问题转化为一对多的作用,解决紧耦合问题,网状结构变为星状结构。

解决原理:


    在中介者中定义所有交互子类对象和定义子类通知父类的方法。    交互子类当中通过构造函数中传入一个中介者(为了回调),用来当交互子类发生状态改变时调用中介者方法通知。    中介者中持有所有交互子类的对象和子类通知通道。    交互子类当发生状态改变时调用中介者方法通知父类。

优点缺点:


    多对多依赖关系解耦,使逻辑结构清晰。

运用场景:


    多对多依赖关系    自动登录与记住密码 —— P327

使用过程:

主要角色:    Mediator:抽象中介者    ConcreteMediator:具体中介者    Colleague:抽象同事类角色    ConcreteColleague:具体同事类角色流程:P230    1、定义Mediator:        主要定义Colleague通知Mediator的方法    2、实现ConcreteMediator:        定义设置所有的ConcreteColleague类的方法    3、定义Colleague:        构造函数中传入Mediator,用来通知Mediator。    4、定义ConcreteColleague:        实现子类自己特有的逻辑    5、调用:        新建一个ConcreteMediator,        新建所有ConcreteColleague子类对象,将ConcreteMediator传入ConcreteColleague当中        用新建的ConcreteColleague来重新设置ConcreteMediator。