中介者模式

定义:用一个中介对象封装一系列的对象交互,中介者使各个对象不惜要显示地相互作用,从而使其耦合松散,而且可以独立的改变他们之间的交互。

我们在实际开发中可能会遇到这样的网状的类间耦合关系,如图。
这里写图片描述
我们把各个节点想成各个类,连线,表示其耦合关系。那中介这模式其实借鉴了计算机网络中的路由结构,他就将上图关系转化成了,如图
这里写图片描述
中间这个节点,就是中介者,从图中可以看出他减少了类间的耦合,当然,什么事都是有相对性的,我们所有的耦合操作都交由中介者类来实现,无疑就使得中介者类变得臃肿,但是存在即使合理,我们来看一看终结者模式的通用代码吧,首先给出中介者模式类图。
这里写图片描述
通用抽象中介者

public abstract class Mediator {
    //定义同事类
    protected ConcreteColleague1 c1;
    protected ConcreteColleague2 c2;

    //通过getter/setter方法吧同事类注入进来
    public ConcreteColleague1 getC1() {
        return c1;
    }
    public void setC1(ConcreteColleague1 c1) {
        this.c1 = c1;
    }
    public ConcreteColleague2 getC2() {
        return c2;
    }
    public void setC2(ConcreteColleague2 c2) {
        this.c2 = c2;
    }

    //中介者模式的业务逻辑
    public abstract void doSomething1();
    public abstract void doSomething2();

}

通用中介者

public class ConcreteMediator extends Mediator {

    @Override
    public void doSomething1() {
        //调用同事类的方法,只要是public方法都可以调用
        super.c1.selfMethod1();
        super.c2.selfMethod2();
    }

    public void doSomething2() {
        super.c1.selfMethod1();
        super.c2.selfMethod2();
    }

}

抽象同事类

public abstract class Colleague {
    protected Mediator mediator;
    public Colleague(Mediator _mediator){
        this.mediator = _mediator;
    }
}

具体同事类

public class ConcreteColleague1 extends Colleague {

    //通过构造函数传递中介者
    public ConcreteColleague1(Mediator _mediator){
        super(_mediator);
    }

    //自有方法 self-method
    public void selfMethod1(){
        //处理自己的业务逻辑
    }

    //依赖方法 dep-method
    public void depMethod1(){
        //处理自己的业务逻辑
        //自己不能处理的业务逻辑,委托给中介者处理
        super.mediator.doSomething1();

    }

}
public class ConcreteColleague2 extends Colleague {

    //通过构造函数传递中介者
    public ConcreteColleague2(Mediator _mediator){
        super(_mediator);
    }

    //自有方法 self-method
    public void selfMethod2(){
        //处理自己的业务逻辑
    }

    //依赖方法 dep-method
    public void depMethod2(){
        //处理自己的业务逻辑
        //自己不能处理的业务逻辑,委托给中介者处理
        super.mediator.doSomething2();
    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值