java23中设计模式之中介者模式

package com.bdqn.mediator;
/**
 * 部门接口
 * @author OU
 *
 */
public interface Department {
    void selfAction();//做本部门的事情
    void outAction();//向总经理发出申请

}

department

package com.bdqn.mediator;
/**
 * 研发部门
 * @author OU
 *
 */
public class Development implements Department{
     private Mediator m;//持有中介者引用

    public Development() {
    }

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

    public void selfAction() {
        System.out.println("汇报工作!没钱了,需要资金支持");

    }

    public void outAction() {
    System.out.println("专心科研,开发项目");
    }

}

development

package com.bdqn.mediator;
/**
 * 财务部
 * @author OU
 *
 */
public class Finacial implements Department {
    private Mediator m;

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

    public void selfAction() {
        System.out.println("数钱");
    }
    public void outAction() {
        System.out.println("汇报工作!没钱了,钱太多了!怎么花");
    }

}

finacial

package com.bdqn.mediator;
/**
 * 市场部
 * @author OU
 *
 */
public class Market implements Department {
     private Mediator m;

        public Market(Mediator m) {
            super();
            this.m = m;
            m.register("market", this);
        }
        public void outAction() {
            System.out.println("汇报工作,项目承接的进度,需要资金支持");
            m.command("finacial");
        }

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

market

package com.bdqn.mediator;
/**
 * 中介者
 * @author OU
 *
 */
public interface Mediator {
   void register(String dname,Department d);
   void command(String dname);

}

mediator

package com.bdqn.mediator;

import java.util.HashMap;
import java.util.Map;

/**
 * 总经理
 * @author OU
 *
 */
public class President implements Mediator {

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

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

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

}

president

package com.bdqn.mediator;

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();
}
}

client

时间: 2024-08-10 15:10:51

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

【设计模式】 模式PK:门面模式VS中介者模式

1.概述 门面模式为复杂的子系统提供一个统一的访问界面,它定义的是一个高层接口,该接口使得子系统更加容易使用,避免外部模块深入到子系统内部而产生与子系统内部细节耦合的问题.中介者模式使用一个中介对象来封装一系列同事对象的交互行为,它使各对象之间不再显式地引用,从而使其耦合松散,建立一个可扩展的应用架构. 2.中介者模式实现工资计算 2.1 类图 大家工作会得到工资,那么工资与哪些因素有关呢?这里假设工资与职位.税收有关,职位提升工资就会增加,同时税收也增加,职位下降了工资也同步降低,当然税收也降

(17):(行为型模式) Mediator 中介者模式

(17):(行为型模式) Mediator 中介者模式,布布扣,bubuko.com

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

概念 Mediator模式也叫中介者模式,是由GoF提出的23种软件设计模式的一种.Mediator模式是行为模式之一,在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用. 角色和职责 GOOD:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而降低耦合:而且可以独立地改变它们之间的交互. Mediator抽象中介者 中介者类的抽象父类. concreteMed

行为型模式:中介者模式

文章首发:行为型模式:中介者模式 十一大行为型模式之二:中介者模式. 简介 姓名 :中介者模式 英文名 :Mediator Pattern 价值观 :让你体验中介是无所不能的存在 个人介绍 : Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explici

行为型模式之中介者模式

概述 如果在一个系统中对象之间存在多对多的相互关系,可以将对象之间的一些交互行为从各个对象中分离出来,并集中封装在一个中介者对象中,并由该中介者进行统一协调,这样对象之间多对多的复杂关系就转化为相对简单的一对多关系.通过引入中介者来简化对象之间的复杂交互,中介者模式是“迪米特法则”的一个典型应用. 定义 中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.中介者模式

9 行为型模式之 - 中介者模式

中介者模式的介绍:中介者模式是行为型模式这一,在日常生活中,比如两口子吵架,孩子和双方的父母会劝架,孩子和双方的父母就称有中介者的意思,就是"和事佬",也就是说调解两个起争端的人.而中介绍者模式比这个例子要复杂的多,上面的例子只是涉及到2个人的,中介者模式要涉及的对象是多个.多个对象之间的交互关系,是很复杂的,是网状的关系,中介者就是要把这种多对多的关系转化为一对多的关系,就是转化为星状结构,如下图 网状关系 星状关系 中介模式的定义:中介者模式包装了一系列对象的相互交互作用的方式,使

设计模式——行为型模式之中介者模式(七)

中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. 介绍 意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应

设计模式---接口隔离模式之中介者模式(Mediator)

一:概念 在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互.Mediator对象起到控制器的作用 二:动机 在软件构建的过程中,经常出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到了一些需求的更改,这种直接的引用关系将面临不断的变化.在这种情况下,我们可以使用“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化. 在这种情况下,我们可使用一个“中介对象”

中介者模式(Mediator)

一.中介者模式介绍 中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用.从而使其耦合松散,而且可以独立地改变它们之间的交互. 中介者模式核心:1.就是将网状结构处理成星型结构      2.将多对多处理成一对多 例如:世界上各个国家的和平和安全,沟通和交流等等问题,如果各个国家都可以互相交互的话,容易造成混乱,关系复杂. 这个时候联合国的作用就出现了,联合国作为一个中介对象来维护各个国家的和平和安全等等的工作. 中介者模式UML图: 例如:公司中如果没有部门经理