中介者模式,实现「中介者」与「对象」之间的关系变成单一对话。

中介者抽象类

/**
 * 中介者模式 - 中介者抽象类
 * @version 0.1
 * @author  BaiJing.biz
 */
public abstract class Mediator {

    public abstract void contact(String msg , Person person);
}

中介者实例

/**
 * 中介者模式 - 中介者具体类
 * @version 0.1
 * @author  BaiJing.biz
 */
public class MediatorReal extends Mediator {

    private Owner owner;
    private Lessee lessee;

    public Owner getOwner() {
        return owner;
    }

    public void setOwner(Owner owner) {
        this.owner = owner;
    }

    public Lessee getLessee() {
        return lessee;
    }

    public void setLessee(Lessee lessee) {
        this.lessee = lessee;
    }

    @Override
    public void contact(String msg, Person person) {
        if(person instanceof Lessee){
            lessee.getMessage(msg);
        }
        if (person instanceof Owner) {
            owner.getMessage(msg);
        }
    }
}

同事抽象类

/**
 * 中介者模式 - 抽象同事类
 * @version 0.1
 * @author  BaiJing.biz
 */
public abstract class Person {

    // 租赁者或设备放的名字 —— 同事名字
    protected String name;
    protected Mediator mediator;

    public Person(String name, Mediator mediator) {
        this.name = name;
        this.mediator = mediator;
    }
}

设备拥有者

/**
 * 中介者模式 - 具体同事类
 * @version 0.1
 * @author  BaiJing.biz
 */
public class Owner extends Person{
    public Owner(String name, Mediator mediator) {
        super(name, mediator);
    }

    // 和中介沟通的方法
    public void contact(String msg){
        mediator.contact(msg,this);
    }

    // 获取信息
    public void getMessage(String msg){
        System.out.println("设备拥有者" + name + "信息:" + msg);
    }
}

设备租赁者

/**
 * 中介者模式 - 具体同事类
 * @version 0.1
 * @author  BaiJing.biz
 */
public class Lessee extends Person{


    public Lessee(String name, Mediator mediator) {
        super(name, mediator);
    }

    // 和中介沟通的方法
    public void contact(String msg){
        mediator.contact(msg,this);
    }

    // 获取信息
    public void getMessage(String msg){
        System.out.println("设备租赁者" + name + "信息:" + msg);
    }

}

客户

public class CustomerRun {
    public static void main(String[] args) {

        MediatorReal mediatorReal = new MediatorReal();

        Owner owner = new Owner("Tom",mediatorReal);
        Lessee lessee = new Lessee("天水",mediatorReal);

        // 中介者和设备拥有者与租赁者的关系
        mediatorReal.setOwner(owner);
        mediatorReal.setLessee(lessee);

        lessee.contact("有挖掘机出租吗 ?");
        owner.contact("单台挖掘机,3000元/天。");


    }
}

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐