Android设计模式之(16)----中介模式

中介模式

中介模式属于行为模式。

理解起来很简单,例如公司新接了好几个项目,那如何告诉公司的各位同学要负责项目是哪一个呢呢,不可能一个人一个人的互相转达

这个时候为了统一通知,就采用公司的企业邮箱统一发送放假消息到各个同学的个人企业邮箱来进行通知

这时公司的企业邮箱就充当了一个中介者的角色.

对比两种情况:

  • 没有中介者的情况

  • 通过公司邮箱终结者

应用场景

  • 多个对象之间存在相互通信关系
  • 多个对象彼此依赖,后续希望对象彼此之间不再彼此依赖,不再彼此知道,只通过中间件进行

代码示例

(一)抽象的中介者通知
public interface Mediator {
    void doSomeThings();
}
(二)抽象的公司同学负责做什么
public abstract class Student {

    public Mediator mediator;

    public Student(Mediator mediator) {
        this.mediator = mediator;
    }
    public abstract void doSomeThings();

}
(三)具体的同学具体做的事

同学A:

public class StudentA extends Student {

    public StudentA(Mediator mediator) {
        super(mediator);
    }

    @Override
    public void doSomeThings() {
        System.out.print("\n" + "通知:StudenA负责A项目");
    }
}

同学B:

public class StudentB extends Student {

    public StudentB(Mediator mediator) {
        super(mediator);
    }

    @Override
    public void doSomeThings() {
        System.out.print("\n" + "通知:StudetB负责B项目");
    }
}
(四)具体的中介通知
public class ConcreteMediator implements Mediator {

    private  StudentA studentA;
    private  StudentB studentB;

    public void setStudentA(StudentA studentA) {
        this.studentA = studentA;
    }

    public void setStudentB(StudentB studentB) {
        this.studentB = studentB;
    }

    @Override
    public void doSomeThings() {
        studentA.doSomeThings();
        studentB.doSomeThings();
    }
}

调用方式

        ConcreteMediator concreteMediator = new ConcreteMediator();
        concreteMediator.setStudentA(new StudentA(concreteMediator));
        concreteMediator.setStudentB(new StudentB(concreteMediator));
        concreteMediator.doSomeThings();

显示结果

通知:StudenA负责A项目
通知:StudetB负责B项目

总结

  • 优点
    • 实现中介一对多的关系,让各个对接点职责清晰
    • 灵活容易维护扩展,需要添加关系只需要和中介者通信即可
  • 缺点
    • 如果一个中介者要处理很多关系,类会变得庞大难以维护(其实也可以通过在构建另外一个中介者来维护,算不上多大的缺点)

github地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值