栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA设计模式(20)行为型-调停者模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA设计模式(20)行为型-调停者模式

调停者犹如第三方中介一般,将所有的类与类之间的引用都导向调停者类,所有类的请求,一致发向调停者,由调停者再发向目标类,这样原本复杂的网状的类关系,变成了简单的星型类关系,调停者类位于核心,所有其他类位于外围,指向调停者。

//@author: v: jbossjf


public interface Mediator {
    void change(String message,ZhiYuan zhiyuan,String nname);
}


public abstract class ZhiYuan {
    String name;
    private Mediator mediator;
    public ZhiYuan(Mediator mediator,String name){
        this.mediator = mediator;
        this.name = name;
    }
    //被调停者调用的方法
    public void called(String message,String nname){
        System.out.println(name + "接收到来自"+ nname + "的需求:" + message);
    }
    //调用调停者
    public void call(String message,ZhiYuan zhiyuan,String nname){
        System.out.println(nname + "发起需求:"+ message);
        mediator.change(message,zhiyuan,nname);
    }
}


public class Jingli implements Mediator {
    @Override
    public void change(String message,ZhiYuan zhiyuan,String nname) {
        System.out.println("经理收到" + nname + "的需求:" + message);
        System.out.println("经理将" + nname + "的需求发送给目标职员");
        zhiyuan.called(message,nname);
    }
}


public class ZhiyuanA extends ZhiYuan {
    public ZhiyuanA(Mediator mediator, String name) {
        super(mediator, name);
    }
}


public class ZhiyuanB extends ZhiYuan {
    public ZhiyuanB(Mediator mediator, String name) {
        super(mediator, name);
    }
}


public class ZhiyuanC extends ZhiYuan {
    public ZhiyuanC(Mediator mediator, String name) {
        super(mediator, name);
    }
}

public class Clienter {
    public static void main(String[] args) {
        //分配职员与经理
        Mediator jingli = new Jingli();
        ZhiYuan zhiyuanA = new ZhiyuanA(jingli,"职员A");
        ZhiYuan zhiyuanB = new ZhiyuanB(jingli,"职员B");
        ZhiYuan zhiyuanC = new ZhiyuanC(jingli,"职员C");
        //职员A的需求
        String messageA = "这些资料需要B职员操作";
        zhiyuanA.call(messageA,zhiyuanB,zhiyuanA.name);
        //职员C的请求
        String messageC = "这些资料需要B职员签名";
        zhiyuanC.call(messageC, zhiyuanB,zhiyuanC.name);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328913.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号