啦啦哩Android开发经验谈Android开发

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

2017-08-30  本文已影响120人  Ch3r1sh

中介模式

中介模式属于行为模式。

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

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

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

对比两种情况:

应用场景

代码示例

(一)抽象的中介者通知

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地址

上一篇下一篇

猜你喜欢

热点阅读