设计模式之调停者模式

来源:互联网 发布:公司内部流程优化 编辑:程序博客网 时间:2024/04/29 17:15

调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。
 调停者模式包括以下角色:
 抽象调停者(Mediator)角色:
 定义出同事对象到调停者对象的接口,其中主要方法是一个(或多个)事件方法。
 具体调停者(ConcreteMediator)角色:
 实现了抽象调停者所声明的事件方法。具体调停者知晓所有的具体同事类,并负责具体的协调各同事对象的交互关系。
 抽象同事类(Colleague)角色:
 定义出调停者到同事对象的接口。同事对象只知道调停者而不知道其余的同事对象。
 具体同事类(ConcreteColleague)角色:
 所有的具体同事类均从抽象同事类继承而来。实现自己的业务,在需要与其他同事通信的时候,就与持有的调停者通信,调停者会负责与其他的同事交互。
 
 这里写图片描述

 抽象调停者类

 public interface Mediator {    /**     * 同事对象在自身改变的时候来通知调停者方法     * 让调停者去负责相应的与其他同事对象的交互     */    public void changed(Colleague c);}

具体调停者类

public class ConcreteMediator implements Mediator {    //持有并维护同事A    private ConcreteColleagueA colleagueA;    //持有并维护同事B    private ConcreteColleagueB colleagueB;        public void setColleagueA(ConcreteColleagueA colleagueA) {        this.colleagueA = colleagueA;    }    public void setColleagueB(ConcreteColleagueB colleagueB) {        this.colleagueB = colleagueB;    }    @Override    public void changed(Colleague c) {        /**         * 某一个同事类发生了变化,通常需要与其他同事交互         * 具体协调相应的同事对象来实现协作行为         */    }}

抽象同事类

public abstract class Colleague {    //持有一个调停者对象    private Mediator mediator;    /**     * 构造函数     */    public Colleague(Mediator mediator){        this.mediator = mediator;    }    /**     * 获取当前同事类对应的调停者对象     */    public Mediator getMediator() {        return mediator;    }   }

具体同事类

public class ConcreteColleagueA extends Colleague {    public ConcreteColleagueA(Mediator mediator) {        super(mediator);    }    /**     * 示意方法,执行某些操作     */    public void operation(){        //在需要跟其他同事通信的时候,通知调停者对象        getMediator().changed(this);    }}
public class ConcreteColleagueB extends Colleague {    public ConcreteColleagueB(Mediator mediator) {        super(mediator);    }    /**     * 示意方法,执行某些操作     */    public void operation(){        //在需要跟其他同事通信的时候,通知调停者对象        getMediator().changed(this);    }}
0 0
原创粉丝点击