设计模式-调停者模式

调停者模式

定义:用于模块间解耦,通过避免对象互相显式的指向对方从而降低耦合。

个人理解:现在的管理模式,A小组B小组两个小组都有一个经理管理,当外面的需求来了的时候需要AB两个小组配合完成,经理会把需求分发到A小组,A小组完成后提交到经理,经理再把需求和A完成的(B可能需要)下发到B小组,等B小组完成再提交给经理,经理再提供给需求者。

UML图解:

优点:松散耦合、可以集中管理、对象之间关系简化为一对多

缺点:当被管理的对象增多时,调停者难于管理和维护

代码:

//抽象的调停者
interface Mediator{
    void sendMessage(Group g);
}

//抽象调停者的对象类
abstract class Group{
    /* 持有调停者对象(谁去管理这个小组) */
    private Mediator mediator;

    public Group(Mediator mediator){
        this.mediator = mediator;
    }

    public Mediator getMediator(){
        return mediator;
    }
}

//具体管理的对象(小组A 小组B)
class GroupA extends Group{

    public GroupA(Mediator mediator) {
        super(mediator);
    }
    //做对应的任务
    public void doTask(){
        System.out.println("开始A小组的工作");
    }
    //做完通知调停者
    public void operation(){
        getMediator().sendMessage(this);
    }
}

class GroupB extends Group{

    public GroupB(Mediator mediator) {
        super(mediator);
    }
    //做对应的任务
    public void doTask(){
        System.out.println("开始A小组的工作");
    }
    //做完通知调停者
    public void operation(){
        getMediator().sendMessage(this);
    }
}

//具体调停者(经理)
class ConcreteMediator implements Mediator{
    private GroupA g1;
    private GroupB g2;

    public void setG1(GroupA g1) {
        this.g1 = g1;
    }

    public void setG2(GroupB g2) {
        this.g2 = g2;
    }

    @Override
    public void sendMessage(Group g) {
        System.out.println("告知消息");
        /*g1.doTask();
        g1.operation();

        g2.doTask();
        g2.operation();*/
    }

}

总结:这个模式如果不了解的话就是听他的理解也感觉很熟悉,没错,中间件啊!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值