行为型模式——中介模式
中介模式概述
中介模式又称调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变他们之间的交互(形成星型结构)。
中介模式结构
中介模式有以下角色:
- 抽象中介者对象:他是中介者的接口,提供了同时对象注册与转发同时对象信息的抽象方法。
- 具体中介者对象:实现中介者接口,定义一个List来管理同时对象,协调各个同时角色之间的交互关系,因此它依赖于同时角色。
- 抽象同事类对象:定义同事类的接口,保存中介者对象,提供同时对象交互的抽象方法,实现所有相互影响的同事类的公共功能。
- 具体同事类对象:是抽象同事类的实现者,当需要与其他同事对象交互时,由中介者对象负责后续的交互。
中介模式实现
/**
* Mediator类是抽象中介类
*/
public abstract class Mediator {
public abstract void constact(String message,Person person);
}
/**
* MediatorStructure类是具体中介类
*/
public class MediatorStructure extends Mediator{
private HouserOwner houserOwner;
private Tenant tenant;
public HouserOwner getHouserOwner() {
return houserOwner;
}
public void setHouserOwner(HouserOwner houserOwner) {
this.houserOwner = houserOwner;
}
public Tenant getTenant() {
return tenant;
}
public void setTenant(Tenant tenant) {
this.tenant = tenant;
}
@Override
public void constact(String message,Person person) {
if (person == houserOwner){
tenant.getMessage(message);
}else {
houserOwner.getMessage(message);
}
}
}
/**
* Person类是抽象同事类
*/
public abstract class Person {
protected String name;
protected Mediator mediator;
public Person(String name, Mediator mediator) {
this.name = name;
this.mediator = mediator;
}
}
/**
* Tenant类、HouserOwner类是具体同事类
*/
public class Tenant extends Person{
public Tenant(String name,Mediator mediator) {
super(name, mediator);
}
public void contact(String message){
mediator.constact(message,this);
}
public void getMessage(String message){
System.out.println("租房者" + name + "获取到的信息" + message);
}
}
public class HouserOwner extends Person{
public HouserOwner(String name,Mediator mediator) {
super(name, mediator);
}
public void constact(String message){
mediator.constact(message,this);
}
public void getMessage(String message){
System.out.println("房主" + name + "获取到的信息" + message);
}
}
中介模式优缺点
1,优点:
在中介模式汇总,所有的具体同事类是平级的关系,都只会直接的与具体中介类耦合,而不会产生同事类与同事类之间的耦合关系。
2,缺点:
当同事类太多时,中介者的职责将很大,它会变得复杂而庞大,以至于系统难以维护。
文章内容为个人学习总结,如有错误望指正。
参考链接https://www.bilibili.com/video/BV1Np4y1z7BU