行为型模式-中介模式
Posted vbirdbest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了行为型模式-中介模式相关的知识,希望对你有一定的参考价值。
定义
中介模式又叫调停模式,顶一个一个中介模式来封装一些列对象之间的交互,使原有对象之间的耦合松散,且可以独立的改变他们之间的交互。
案例
中介就是中转,就是一个传话筒。
/**
* 抽象同事类
*/
public abstract class Person
protected String name;
protected Mediator mediator;
public Person(String name, Mediator mediator)
this.name = name;
this.mediator = mediator;
/**
* 租房者(具体同事角色类)
*/
public class Tenant extends Person
public Tenant(String name, Mediator mediator)
super(name, mediator);
/**
* 和中介联系(沟通):发送请求
*/
public void constract(String message)
mediator.constract(message, this);
/**
* 获取信息:获取响应
*/
public void getMessage(String message)
System.out.println("租房者:" + name + " 获取到的信息是:" + message);
/**
* 房主(具体的同事角色类)
*/
public class HouseOwner extends Person
public HouseOwner(String name, Mediator mediator)
super(name, mediator);
/**
* 和中介联系(沟通):发送请求
*/
public void constract(String message)
mediator.constract(message, this);
/**
* 获取信息:获取响应
*/
public void getMessage(String message)
System.out.println("房主:" + name + " 获取到的信息是:" + message);
/**
* 抽象中介者
*/
public abstract class Mediator
public abstract void constract(String message, Person person);
/**
* 具体的中介者角色类
*/
public class MediatorStructure extends Mediator
private HouseOwner houseOwner;
private Tenant tenant;
@Override
public void constract(String message, Person person)
if (person == houseOwner)
tenant.getMessage(message);
else
houseOwner.getMessage(message);
public HouseOwner getHouseOwner()
return houseOwner;
public void setHouseOwner(HouseOwner houseOwner)
this.houseOwner = houseOwner;
public Tenant getTenant()
return tenant;
public void setTenant(Tenant tenant)
this.tenant = tenant;
public class Client
public static void main(String[] args)
// 中介(传话筒)
MediatorStructure mediator = new MediatorStructure();
// 租房者
Tenant tenant = new Tenant("李四", mediator);
// 房主
HouseOwner houseOwner = new HouseOwner("张三", mediator);
mediator.setTenant(tenant);
mediator.setHouseOwner(houseOwner);
// 中介将租房者的要求转发给房主
tenant.constract("我要租两室一厅");
// 房主将信息通过中介转交给租房者
houseOwner.constract("我这里有三室一厅的,你要租吗?");
- 租房者和房主都持有中介对象。
- 中介对象同时持有租房者和房主对象。
- 中介提供中转方法。
优缺点
优点:
- 松散耦合
- 集中控制交互
- 一对多关联转变为一对一的关联
缺点:
当同事类太多时,中介者的责任将很大,它会变的复杂而庞大,以至于系统难以维护。
使用场景
- 系统中对象之间存在复杂的引用关系,系统结构混乱且难以理解。
- 当想创建衣蛾运行与多个类之间的对象,又不想生成新的子类时。
以上是关于行为型模式-中介模式的主要内容,如果未能解决你的问题,请参考以下文章