android持有者模式,Android设计模式-中介者模式

1.定义

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

2.中介者模式UML图

574c3c0e7bc7

中介者模式UML图

角色介绍

Mediator 抽象中介者角色,定义统一的接口,用于各同时角色之间的交互

ConcreteMediator 具体中介者角色,具体中介者角色通过协调同事角色实现交互,因此,必须持有同事角色的引用。

Colleague 同事角色,每一个同事角色,都需要直到中介者角色,并且不同同事角色之间的交互通信,需要通过中介者角色进行。每个同事者角色,都有两种行为,一种是自发行为,一种是依赖方法。自发行为表示不需要中介者角色可以自己完成相应逻辑的方法。依赖方法是指必须通过中介者才能完成的方法。

3.简单实现

3.1抽象中介者角色

public abstract class Mediator {

private ConcreteColleague1 concreteColleague1;

private ConcreteColleague2 concreteColleague2;

public ConcreteColleague1 getConcreteColleague1() {

return concreteColleague1;

}

public void setConcreteColleague1(ConcreteColleague1 concreteColleague1) {

this.concreteColleague1 = concreteColleague1;

}

public ConcreteColleague2 getConcreteColleague2() {

return concreteColleague2;

}

public void setConcreteColleague2(ConcreteColleague2 concreteColleague2) {

this.concreteColleague2 = concreteColleague2;

}

public abstract void method1();

public abstract void method2();

}

3.2具体中介者角色

public class ConcreteMediator extends Mediator {

@Override

public void method1() {

super.getConcreteColleague1().doSelf();

super.getConcreteColleague2().doSelf();

}

@Override

public void method2() {

super.getConcreteColleague1().doSelf();

super.getConcreteColleague2().doSelf();

}

}

3.3同事角色

public abstract class Colleague {

protected Mediator mediator;

public Colleague(Mediator mediator) {

this.mediator = mediator;

}

}

3.4具体同事角色

public class ConcreteColleague1 extends Colleague {

public ConcreteColleague1(Mediator mediator) {

super(mediator);

}

public void doSelf(){

/**

* 可以自己完成的操作

*/

System.out.println("具体同时角色1的自己方法————");

}

public void doDep(){

super.mediator.method1();

}

}

public class ConcreteColleague2 extends Colleague {

public ConcreteColleague2(Mediator mediator) {

super(mediator);

}

public void doSelf(){

/**

* 可以自己完成的操作

*/

System.out.println("具体同时角色2的自己方法————");

}

public void doDep(){

super.mediator.method2();

}

}

3.5客户端调用

public class MyClass {

public static void main(String args[]) {

Mediator mediator=new ConcreteMediator();

ConcreteColleague1 colleague1=new ConcreteColleague1(mediator);

ConcreteColleague2 colleague2=new ConcreteColleague2(mediator);

mediator.setConcreteColleague1(colleague1);

mediator.setConcreteColleague2(colleague2);

colleague1.doDep();

}

}

打印结果

具体同时角色1的自己方法————

具体同时角色2的自己方法————

如例子中所写,具体同事角色继承自同事角色抽象类,同事角色中传入中介者角色进行初始化,当调用具体同事角色当相应方法时,通过调用中介角色当方法,完成不同具体同事角色间当通信。

4.总结

优点

中介者模式优点就是减少了类间当依赖,同时降低类类间当耦合

缺点

中介者模式将原来一对多模式改为了中介者和同事类的依赖,同事类越多的时候,中介者的逻辑就会越复杂。。

在面向对象编程中,一个类必然会和多个类有联系,当这种一对多的联系过于复杂的时候,可以考虑使用中介者模式来进行解耦,但是不复杂的时候,使用中介者模式,反而会看起来更麻烦。。。具体程度看具体情况了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值