File tree Expand file tree Collapse file tree 1 file changed +28
-1
lines changed Expand file tree Collapse file tree 1 file changed +28
-1
lines changed Original file line number Diff line number Diff line change 1515使用场景:
1616当对象之间的交互操作很多,且每个对象的行为操作都依赖彼此时,为防止在修改一个对象的行为时,同时涉及
1717修改很多其他对象的行为。可以采取中介者模式,来解决紧耦合问题。该模式将对象间的多对多关系变成一对多的关系。
18- 中介者对象将系统从网状结构变成以调停者为中心的星结结构,达到降低系统复杂性,提高可扩展性的作用。
18+ 中介者对象将系统从网状结构变成以调停者为中心的星结结构,达到降低系统复杂性,提高可扩展性的作用。
19+
20+ 模型:
21+ Mediator 抽象中介者 ,定义了同事对象到中介者对象的接口,一般以抽象类的方式实现
22+ ConcreteMediator 具体中介者角色,继承抽象中介者。实现了父类定义的方法。它从具体的同事对象接收
23+ 消息,向具体同事对象发出命令
24+ Colleague 抽象同事类角色,定义了中介者对象的接口,它只知道中介者而不知道而他同事类
25+ ConcreteColleagueA/B 具体同事类角色,继承抽象同事类,每一个具体同事类都知道本身在小范围内的行为
26+ 而不知道它在大范围内的目的
27+
28+ 具体的例子:
29+ 电脑由CPU、内存、显卡、IO设备构成,但只有起中介者作用的主板,才能连接CPU、内存、显卡和IO设备。任何
30+ 两个模块之间的通信都会经过主板去协调,这里以读取光盘为例。
31+ 中介者模式就是用来协调多个对象之间的交互的,就像上面实例中主板,如果没有主板这个中介者
32+ 那么电脑里的每一个零部件都需要与其他零部件建立关联,这样一来就会形成一个复杂的网状图,而中介者模式的出现则
33+ 是将这一个错综复杂的网状图变成一个结构清晰的星形图,其中心就是中介者
34+
35+
36+ Android源码中的中介者模式的实现:
37+
38+ 1.KeyGuard 锁屏的功能实现
39+ 2.Binder机制 用来绑定不同的系统级服务并进行跨进程通信
40+ 3.登陆界面的各种验证 即在EditText、CheckBox的状态变化的回调中,调用同一的change()函数,在这个函数中
41+ 根据状态变化条件,做不同的逻辑操作
42+
43+
44+ 总结:适当地使用中介者模式可以对这种依赖关系进行解耦使逻辑结构清晰,但是如果几个类间的依赖关系并不复杂
45+ 使用中介者模式反而会使得原本不复杂的逻辑结构变得复杂
You can’t perform that action at this time.
0 commit comments