设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 中介者模式(Mediator) - Java实现

设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 中介者模式(Mediator)
中介者封装一系列对象操作,使对象之间不需要显式操作,从而实现耦合松散。

一、说明:
1、IMediator 中介者(接口);
2、AbstractColleague 同事类(彼此之间相互影响的类);
3、ColleagueA 同事类.实现类;
4、ColleagueB 同事类.实现类;
5、Mediator 中介者.实现类。

二、Java实现,代码如下:
1、IMediator

package com.java.designPattern.mediator;

/**
 * 中介者 - 接口
 *
 */
public interface IMediator {

    public void handleColleagueA();

    public void handleCooleagueB();

}

2、AbstractColleague

package com.java.designPattern.mediator;

/**
 * 同事类 - 彼此之间相互影响
 *
 */
public abstract class AbstractColleague {

    private Integer num;

    public AbstractColleague(Integer num) {
        this.num = num;
    }

    public Integer getNum() {
        return num;
    }

    public void setNum(Integer num) {
        this.num = num;
    }

    public abstract void setNum(Integer num, IMediator mediator);

}

3、ColleagueA

package com.java.designPattern.mediator;

/**
 * 同事类 - 实现类
 *
 */
public class ColleagueA extends AbstractColleague {

    public ColleagueA(Integer num) {
        super(num);
    }

    @Override
    public void setNum(Integer num, IMediator mediator) {
        setNum(num);
        mediator.handleCooleagueB();
    }

}

4、ColleagueB

package com.java.designPattern.mediator;

/**
 * 同事类 - 实现类
 *
 */
public class ColleagueB extends AbstractColleague {

    public ColleagueB(Integer num) {
        super(num);
    }

    @Override
    public void setNum(Integer num, IMediator mediator) {
        setNum(num);
        mediator.handleColleagueA();
    }

}

5、Mediator

package com.java.designPattern.mediator;

/**
 * 中介者 - 实现类
 *
 */
public class Mediator implements IMediator {

    private ColleagueA colleagueA;
    private ColleagueB colleagueB;

    public Mediator(ColleagueA colleagueA, ColleagueB colleagueB) {
        this.colleagueA = colleagueA;
        this.colleagueB = colleagueB;
    }

    @Override
    public void handleColleagueA() {
        colleagueA.setNum(colleagueB.getNum() + 1);
    }

    @Override
    public void handleCooleagueB() {
        colleagueB.setNum(colleagueA.getNum() - 1);
    }

}

6、Test

package com.java.designPattern.mediator;

/**
 * 测试类
 *
 */
public class Test {

    public static void main(String[] args) {
        ColleagueA colleagueA = new ColleagueA(0);
        ColleagueB colleagueB = new ColleagueB(0);
        Mediator mediator = new Mediator(colleagueA, colleagueB);

        System.out.println("colleagueA : " + colleagueA.getNum());
        System.out.println("colleagueB : " + colleagueB.getNum());
        System.out.println("parting line !!!");

        colleagueA.setNum(2, mediator);
        System.out.println("colleagueA : " + colleagueA.getNum());
        System.out.println("colleagueB : " + colleagueB.getNum());
        System.out.println("parting line !!!");

        colleagueB.setNum(3, mediator);
        System.out.println("colleagueA : " + colleagueA.getNum());
        System.out.println("colleagueB : " + colleagueB.getNum());
    }

}

输出:
colleagueA : 0
colleagueB : 0
parting line !!!
colleagueA : 2
colleagueB : 1
parting line !!!
colleagueA : 4
colleagueB : 3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值