java设计模式——行为型模式——中介模式

行为型模式——中介模式

中介模式概述

中介模式又称调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变他们之间的交互(形成星型结构)。

中介模式结构

中介模式有以下角色:

  • 抽象中介者对象:他是中介者的接口,提供了同时对象注册与转发同时对象信息的抽象方法。
  • 具体中介者对象:实现中介者接口,定义一个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

你可能感兴趣的:(Java设计模式,设计模式)