前言
本章讲解设计模式中介者设计模式的相关知识
方法
1.概念
在Java的世界中,类与类之间难免有些相互的调用,一旦类之间的关系较为复杂,每个类都持有对方对象的引用,那么管理起来将十分的困难!为了解决这个问题,我们使用中介者设计模式来进行编程,使得有关系的双方可以通过中介进行联系,实现解耦。
现实生活中的中介者模式屡见不鲜,比如说租房子吧,这个博主印象比较深刻!
2.中介者设计模式的实现思路
1)创建相应工程
2)创建中介者抽象类和具体实现
package mediator;
/**
* 中介者接口
* @author jwang
*
*/
public interface Mediator {
//注册各式各样的人
public void register(String type,People people);
//向某一类人发布命令
public void commond(String type);
}
package mediator;
import java.util.HashMap;
import java.util.Map;
/**
* 链家中介
* @author jwang
*
*/
public class Lianjia implements Mediator{
private Map<String, People> map = new HashMap<>();
@Override
public void register(String type, People people) {
map.put(type, people);
}
@Override
public void commond(String type) {
map.get(type).doSomeThing();
}
}
3)创建房屋租赁参与者People接口
package mediator;
public interface People {
//本职职责
public void doSomeThing();
//交互方法
public void say();
}
4)创建房东和我
package mediator;
/**
* 房东类
* @author jwang
*
*/
public class Fangdong implements People{
private Mediator mediator;
public Fangdong(Mediator mediator) {
super();
this.mediator = mediator;
this.mediator.register("fangdong", this);
}
@Override
public void doSomeThing() {
System.out.println("【房东】:我正在租房子!");
}
@Override
public void say() {
System.out.println("【房东】:我需要找到租客");
mediator.commond("me");
}
}
这里的我只是其中的一个租客,当然了还有很多人想租。
package mediator;
/**
* 租客类
* @author jwang
*
*/
public class Me implements People{
private Mediator mediator;
public Me(Mediator mediator) {
super();
this.mediator = mediator;
this.mediator.register("me", this);
}
@Override
public void doSomeThing() {
System.out.println("【租客】:我正在找房子!");
}
@Override
public void say() {
System.out.println("【租客】:我需要找到房东");
mediator.commond("fangdong");
}
}
5)创建测试类测试
package mediator;
public class Test {
public static void main(String[] args) {
Mediator mediator = new Lianjia();
Me jwang = new Me(mediator);
Fangdong fangdong = new Fangdong(mediator);
jwang.say();
fangdong.say();
}
}
运行结果如下: