设计模式(Design pattern)之中介者模式(Mediator Pattern)
·
中介者模式,实现「中介者」与「对象」之间的关系变成单一对话。
中介者抽象类
/**
* 中介者模式 - 中介者抽象类
* @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元/天。");
}
}
更多推荐



所有评论(0)