设计模式之中介者模式 Mediator

代码实现

public interface Mediator {

    void register(String dname,Department d);
    void command(String dname);
}

中介者接口

/*
 * 同事类接口
 */
public interface Department {

    void selfAction(); //做本部门工作
    void outAction();  //向总经理发出申请
}

同事类接口

public class Development implements Department{

    private Mediator m ; //持有中介者(总经理)的引用

    public Development(Mediator m) {
        super();
        this.m = m;
        m.register("development", this);
    }

    @Override
    public void selfAction() {
        System.out.println("开发项目");
    }

    @Override
    public void outAction() {
        System.out.println("汇报工作,需要资金支持");
    }

}

public class Finacial implements Department{

    private Mediator m ; //持有中介者(总经理)的引用

    public Finacial(Mediator m) {
        super();
        this.m = m;
        m.register("finacial", this);
    }

    @Override
    public void selfAction() {
        System.out.println("数钱");
    }

    @Override
    public void outAction() {
        System.out.println("汇报工作,钱怎么分配");
    }

}

public class Market implements Department{

    private Mediator m ; //持有中介者(总经理)的引用

    public Market(Mediator m) {
        super();
        this.m = m;
        m.register("market", this);
    }

    @Override
    public void selfAction() {
        System.out.println("接项目");
    }

    @Override
    public void outAction() {
        System.out.println("汇报工作,最新市场动态,需要资金支持");
        m.command("finacial");
    }

}

同事类实现

public class President implements Mediator{

    private Map<String,Department> map = new HashMap<String,Department>();

    @Override
    public void register(String dname, Department d) {
        map.put(dname,d);
    }

    @Override
    public void command(String dname) {
        map.get(dname).selfAction();
    }

}

中介者实现

public class Client {

    public static void main(String[] args) {
        Mediator m = new President();

        Market market = new Market(m);
        Development devp = new Development(m);
        Finacial f = new Finacial(m);

        market.selfAction();
        market.outAction();
    }
}

测试

时间: 2024-09-30 14:35:37

设计模式之中介者模式 Mediator的相关文章

设计模式之中介者模式(Mediator)摘录

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以

二十三种设计模式[17] - 中介者模式(Mediator Pattern)

前言 在开发软件的过程中,我们通常会将类设计的比较单纯,使其复用性更高.但类间的相互引用又使得类本身在没有其他类的支持下不能正常工作,导致其复用性降低.所以为了提高类的复用性我们需要尽可能的减少对其它类的引用,也就是说我们常说的解耦.中介者模式,顾名思义,就是存在一个类似中介的角色,类与类之间不直接交互而是通过中介进行间接的交互,也就意味着类与类之间不需要存在显示的引用,以达到松耦合的目的. 中介者模式,对象行为型模式的一种.在<设计模式 - 可复用的面向对象软件>一书中将之描述为"

大熊君说说JS与设计模式之------中介者模式Mediator

一,总体概要 1,笔者浅谈 我们从日常的生活中打个简单的比方,我们去房屋中介租房,房屋中介人在租房者和房东出租者之间形成一条中介.租房者并不关心他租谁的房.房东出租者也不关心他租给谁.因为有中介的存在,这场交易才变得如此方便. 在软件的开发过程中,势必会碰到这样一种情况,多个类或多个子系统相互交互,而且交互很繁琐,导致每个类都必须知道他需要交互的类,这样它们的耦合会显得异常厉害.牵一发而动全身,后果很严重,大熊很生气!~~~~(>_<)~~~~  好了,既然问题提出来了,那有请我们这期的主角-

设计模式 笔记 中介者模式 Mediator

//---------------------------15/04/27---------------------------- //Mediator 中介者模式----对象行为型模式 /* 1:意图: 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散, 而且可以独立地改变它们之间的交互. 2:动机: 3:适用性: 1>一组对象以定义良好但是复杂的方式进行通信.产生的相互依赖关系结构混乱且难以理解. 2>一个对象引用其他很多对象并且直接与这些对象通信

【设计模式】—— 中介者模式Mediator

前言:[模式总览]——————————by xingoo 模式意图 使用一个中介的对象,封装一组对象之间的交互,这样这些对象就可以不用彼此耦合. 这个中介者常常起着中间桥梁的作用,使其他的对象可以利用中介者完成某些行为活动,因此它必须对所有的参与活动的对象了如指掌! 应用场景 1 当一组对象要进行沟通或者业务上的交互,但是其关系却又很复杂混乱时,可以采用此模式. 2 当一个对象与其他的对象要进行紧密的交互,但又想服用该对象而不依赖其他的对象时. 3 想创造一个运行于多个类之间的对象,又不想生成新

设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)

设计模式 ( 十五 ) 中介者模式Mediator(对象行为型) 1.概述 在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各个对象中. 对于一个模块或者系统,可能由很多对象构成,而且这些对象之间可能存在相互的引用,在最坏的情况下,每一个对象都知道其他所有的对象,这无疑复杂化了对象之间的联系.虽然将一个系统分割成许多对象通常可以增强可复用性,但是对象间相互连接的激增又会降低其可复用性,大量的相互连接使得一个对象似乎不太可能

设计模式之中介者模式20170731

行为型设计模式之中介者模式: 一.含义 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 同事角色与其他同时角色通信的时候,一定要通过中介者角色(中介者封装了各个同事类之间的逻辑关系) 二.代码说明 1.主要有两个角色 1)中介者角色 通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色. 2)同事角色 每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一定要通过中介者角色协作. 每个同事类的行为分

【设计模式】——中介者模式

中介者模式(Mediator),用一个中介者对象来封装一系列的对象交互.中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互. Colleague叫做抽象同事类,而ConcreteColleague是具体同事类,每个具体同事只知道自己的行为,而不了解其他同事类的情况,但它们却都认识中介者对象,Mediator是抽象中介者,定义了同事对象到中介者对象的接口,ConcreteMediator是具体中介者对象,实现抽象类的方法,它需要知道所有具体同事类,并从具体同事接

折腾Java设计模式之中介者模式

博文原址:折腾Java设计模式之中介者模式 中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. 通俗点来讲就是提供一个中介平台,说到平台,那其实很容易联系到我们很熟悉的房地产中介.我们可以直接通过这个平台得到我们想要的信息,不用对象自身与其他对象交互. 买房子租房子就不需要去找房东,只需要在中介那里获取相应的×××信息.如下图那样,两方只