标签:引用关系 一个 private 中间 承担 his 系统 观察者模式 抽象类
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
1、简化了对象之间的关系,将系统的各个对象之间的相互关系进行封装,将各个同事类解耦,使得系统变为松耦合。
2、提供系统的灵活性,使得各个同事对象独立而易于复用。
1、中介者模式中,中介者角色承担了较多的责任,所以一旦这个中介者对象出现了问题,整个系统将会受到重大的影响。
2、新增加一个同事类时,不得不去修改抽象中介者类和具体中介者类,此时可以使用观察者模式和状态模式来解决这个问题。
1、系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。
2、想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。
1、利用中介者模式,实现市场的买卖交易系统。
/**
* 交易者抽象类
*/
public abstract class Participant {
protected Mediary mediary;
void sendMessage(String message) {}
}
/**
* 卖方
*/
public class Solder extends Participant {
public Solder(Mediary mediary) {
this.mediary = mediary;
}
@Override
void sendMessage(String message) {
super.sendMessage(message);
this.mediary.sendMessage(message,this);
}
}
/**
* 买方
*/
public class Buyer extends Participant {
public Buyer(Mediary mediary) {
this.mediary = mediary;
}
@Override
void sendMessage(String message) {
super.sendMessage(message);
this.mediary.sendMessage(message,this);
}
}
/**
* 中介者抽象类
*/
public abstract class Mediary {
void sendMessage(String message,Participant participant) {}
}
/**
* 中介者类
*/
public class Market extends Mediary {
private Participant buyer;
private Participant solder;
public void setBuyer(Participant buyer) {
this.buyer = buyer;
}
public void setSolder(Participant solder) {
this.solder = solder;
}
@Override
void sendMessage(String message,Participant participant) {
super.sendMessage(message,participant);
if (participant == buyer) {
System.out.println("卖家:" + message);
} else {
System.out.println("买家:" + message);
}
}
}
/**
* 客户端
*/
public class Client{
public static void main(String[] args) {
Market market = new Market();
Solder solder = new Solder(market);
Buyer buyer = new Buyer(market);
market.setBuyer(buyer);
market.setSolder(solder);
solder.sendMessage("大哥,要盘吗?");
buyer.sendMessage("滚!");
}
}
结果:
买家:大哥,要盘吗?
卖家:滚!
标签:引用关系 一个 private 中间 承担 his 系统 观察者模式 抽象类
原文地址:https://www.cnblogs.com/feiqiangsheng/p/12239962.html