设计模式之 中介者模式
中介者模式 对象和对象直接不直接交互,而是通过一个中介者来实现对象之间的交互。使原有对象之间的关系变得松散,且可以通过定义不同的中介者来改变他们之间的交互。
(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("租客对面积不满意"); } }