设计模式之 中介者模式

中介者模式 对象和对象直接不直接交互,而是通过一个中介者来实现对象之间的交互。使原有对象之间的关系变得松散,且可以通过定义不同的中介者来改变他们之间的交互。

(1)定义房东

public class Landlord{
    private final static Log logger = LogFactory.getLog(this.getClass());
    public boolean operation(String msg){
        logger.info("landlord receive a message from mediator"+msg);
        return true;
    }
}

(2)定义租户

public class Tenant{
    private final static Log logger = LogFactory.getLog(this.getClass());
    public boolean operation(String msg){
        logger.info("tenant receive a message from mediator"+msg);
        return true;
    }
}

(3)定义中介

public abstract class Mediator{
    protected Landlord landlord;
    protected Tenant tenant;
    public Mediator(Landlord landlord,Tenant tenant){
        this.landlord = landlord;
        this.tenant = tenant;
    }

    public abstract boolean notifyTenant(String msg);
    public abstract boolean notifyLandlord(String msg);
}

public class ConcreteMediator extends Mediator{
    public ConcreteMediator(Landlord landlord,Tenant tenant){
        super(landlord,tenant);
    }

    @Override
    public boolean notifyTenant(String msg) {
        if (tenant != null){
            return tenant.operation(msg);
        }
        return false;
    }

    @Override
    public boolean notifyLandlord(String msg) {
        if (landlord != null){
            return landlord.operation(msg);
        }
        return false;
    }
}

(4)使用中介者模式

public static void main(String[] args){
    Landlord landlord = new Landlord();
    Tenant tenant = new Tenant();
    ConcreteMediator concreteMediator = new ConcreteMediator(landlord,tenant);

    boolean result = concreteMediator.notifyTenant("想租两室一厅吗?");
    if (result){
        concreteMediator.notifyLandlord("租客对面积满意");
    }else {
        concreteMediator.notifyLandlord("租客对面积不满意");
    }
}

原文地址:https://www.cnblogs.com/betterwgo/p/15239398.html