无废话设计模式(17)行为型模式--中介者模式

0-前言

  中介者模式定义(Mediator):

         用一个中介对象来封装一系列的对象交互。

         中介者对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。

1-实现

1-1、简单UML图

1-2、代码实现

//1、中介者抽象父类(客服父类)-----------------------------------------
abstract class CustomerServer
{
    abstract void Communicate(String message,Communicator communicator);
}
//1-1、具体中介者(客服MM)
class CustomerServerMM extends CustomerServer
{
    //A、设置客服服务的对象
    private Customer customer;
    private Technician technician;

    public void setCustomer(Customer _customer)
    {
        this.customer = _customer;
    }

    public void setTechnician(Technician _technician)
    {
        this.technician = _technician;
    }

    //B、客服开始沟通
    @Override
   public void Communicate(String message, Communicator communicator)
    {
        if (communicator ==customer) //顾客
        {
            technician.GetMessage(message);
        }
        else
        {
            customer.GetMessage(message);
        }
    }
}

//2、服务对象抽象父类-------------------------------------------------
abstract  class Communicator
{
    protected  CustomerServer customerServer; //中介者
    public Communicator(CustomerServer _customerServer)
    {
        this.customerServer = _customerServer;
    }
}

//2-1、服务对象具体类(顾客)
class Customer extends Communicator
{
    public Customer(CustomerServer customerServer)
    {
        super(customerServer);
    }

    //A、咨询
    public  void Ask(String message)
    {
        customerServer.Communicate(message,this);
    }

    //B、获得回复
    public void  GetMessage(String message)
    {
        System.out.println("顾客得到技术人员的回复:"+message);
    }
}

//2-2、服务对象具体类(维修技术人员)
class Technician extends Communicator
{
    public Technician(CustomerServer customerServer)
    {
        super(customerServer);
    }

    //A、回复
    public  void Anser(String message)
    {
        customerServer.Communicate(message,this);
    }

    //B、获得问题
    public void  GetMessage(String message)
    {
        System.out.println("技术人员接收到顾客的问题:"+message);
    }

客户端

CustomerServerMM csMM = new CustomerServerMM();

        Customer customer = new Customer(csMM);
        Technician technician = new Technician(csMM);

        csMM.setCustomer(customer);
        csMM.setTechnician(technician);

        customer.Ask("为什么我的电脑开不了机");
        technician.Anser("电池没插电源没插,开啥机!");

运行结果

2-应用场景简单总结

1、当一组对象以定义良好但是复杂的方式进行相互通讯时;

2、当一个对象需要引用很多其他对象并与这些对象通讯时;

(0)

相关推荐

  • 留学生商科论文怎么写

    商科论文当中最常见的7P理论,希望帮到你: 01 Product 产品:branding, quality和customer service 重点分析: What to sell? Is there ...

  • 快不行的“匹凸匹” 原来是互联网“黑话”

    炒股的朋友们可能听说过"匹凸匹"--这家名称奇怪到有些搞笑的公司最近因为持续亏损两年,挂上了"ST"标,实施退市风险提示. 然而,对于大部分网友来说,不仅&qu ...

  • Lean is not cost cutting, or maybe it is?

    I often find myself saying lazy people are Lean people because they always find a quicker and better ...

  • 图解Java设计模式之中介者模式

    智能家庭项目 传统方案解决智能家庭管理问题 中介者模式基本介绍 中介者模式的原理类图 中介者模式 - 智能家庭的操作流程 中介者模式的注意事项和细节 智能家庭项目 1)智能家庭包括各种设备,闹钟.咖啡 ...

  • 行为型模式之中介者模式

    在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是"网状结构",它要求每个对象都必须知道它需要交互的对象. 如果把这种"网状结构"改为& ...

  • 无废话设计模式(16)行为型模式--备忘录模式

    0-前言 备忘录模式定义:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态. 这样以后就可以将该对象恢复到原先保存的状态. 1-实现 备忘录模式设计的初衷是用于备份状态. 但是 ...

  • 无废话设计模式(15)行为型模式--观察者模式

    0-前言 观察者模式定义:定义了一种一对多的依赖关系让多个观察者对象同事监听某一主题对象. 这个主题对象在状态发生改变时,会通知所有观察者对象,使他们能够自动更新自己: 1-实现 1-1.简单UML图 ...

  • 无废话设计模式(12)行为型模式--模板方法模式

    0-前言 模板方法模式定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中: 模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些步骤: 1-实现 1-1.简单UML图:  1-2 ...

  • 无废话设计模式(11)结构型模式--代理模式

    0-前言 代理模式定义:为其他对象提供一种代理以控制对这个对象的访问. 1-实现 1-1.简单UML图: 1-2.代码实现 //1.抽象父类 abstract class Actor { public ...

  • 无废话设计模式(10)结构型模式--外观模式

    0-前言 外观模式定义:为子系统中的一组接口提供一个一致的界面,此模式定了一个高层接口    这一接口使得这一子系统更加容易使用: 1-实现 1-1.简单UML图: 1-2.代码实现 //1.子系统A ...

  • 无废话设计模式(9)结构型模式--享元模式

    0-前言 享元模式定义:运用共享技术有效地支持大量细粒度的对象. 1-实现 1-1.简单UML图:  1-2.代码实现 //1.抽象父类(网站父类) abstract class Website { ...

  • 无废话设计模式(1)--简单工厂、工厂方法、抽象工厂

    0-前言 简单工厂.工厂方法.抽象工厂都是创建型的设计模式,三个设计模式都是工厂的变种,不复杂,下面我们来快速学习这三种: 1-简单工厂模式 太简单,UML图就不画了,直接上代码: //------- ...

  • 设计模式-行为型-中介者模式

    中介者模式(Mediator): 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室.QQ群.短信平台和房产中介.不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中 ...

  • PHP设计模式之中介者模式

    PHP设计模式之中介者模式 上回说道,我们在外打工的经常会和一类人有很深的接触,那就是房产中介.大学毕业后马上就能在喜欢的城市买到房子的X二代不在我们的考虑范围内哈.既然需要长期的租房,那么因为工作或 ...