目录
中介者模式
定义一个封装一组对象如何交互的对象。通过使对象明确的相互引用来促进松散耦合,并允许独立的改变它们的交互。
类型:行为型
使用场景:系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解。交互的公共行为,如果需要改变行为,则可以增加新的中介者类。
优点:将一对多转化成一对一,降低程序复杂度。类之间解耦。
缺点:中介者类过多,会造成系统复杂
例子:
public class GameGroup {
public static void showMessage(Player player , String message){
System.out.println(new Date().toString() + ":【" + player.getName() + "】" + message);
}
}
public class Player {
private String name;
public Player(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void sendMessage(String message){
GameGroup.showMessage(this , message);
}
}
public class Test {
public static void main(String[] args) {
Player haozi = new Player("耗子");
Player rou = new Player("肉");
haozi.sendMessage("hello rou");
rou.sendMessage("hi,haozi");
}
}
看代码,实现起来很简单,这里就不多说了。
用到设计模式的源码:
java.util.Timer
其中,TimerTask就相当于player,通过timer这个中介者来协调具体的定时任务的实现。