设计模式 | 您所在的位置:网站首页 › 中介者模式实例闲置物品交换 › 设计模式 |
前言: (昨天做了几个俯卧撑搞得现在浑身酸疼o(╥﹏╥)o) 中介者模式可以看成在公司中,财务部和市场部、研发部等部门,如果没有总经理的话,那么这些部门就需要相互打交道,就形成了n:n的关系,那么这样的关系就会变得很复杂 但是如果有了总经理(作为中介者),那他们只需要跟总经理打交道就可以了,总经理叫他发钱,那他就发钱,也不用问给谁发钱 目录
一、代码实现: 一、类图 二、具体代码实现 Department: Development: Finance: Mediator: President: Client: 实现结果: 二、本质 三、应用 一、代码实现: 一、类图Market: //市场部 public class Maket implements Department{ private Mediator mediator; public Maket(Mediator mediator) { super(); this.mediator = mediator; mediator.register("Maket", this); } @Override public void selfaction() { // TODO 自动生成的方法存根 System.out.print("跑去接项目"); } @Override public void outaction() { // TODO 自动生成的方法存根 System.out.println("没钱了,没钱吃饭了"); mediator.command("Finance"); } } Mediator: public interface Mediator { void register(String dname,Department d);//我下面有谁 void command (String name);//部门的需求是什么 } President:import java.util.HashMap; import java.util.Map; public class President implements Mediator { private Mapmap=new HashMap(); @Override public void register(String dname, Department d) { // TODO 自动生成的方法存根 //添加相关部门到自身集合中 map.put(dname, d); } @Override public void command(String name) { // TODO 自动生成的方法存根 //找打相关部门处理事务 map.get(name).selfaction(); } } Client: public class Client { public static void main(String[] args) { Mediator mediator=new President(); Maket maket=new Maket(mediator); Development development=new Development(mediator); Finance finance=new Finance(mediator); maket.outaction(); } } 实现结果:
核心: 如果一个系统中的对象之间的联系呈现为网状结构,对象之间存在大量的多对多的关系,将导致关系极其复杂,这些对象成为同事对象 我们可以引入一个中介者对象,使得各个同事对象只跟中介者对象打交道,将复杂的网络结构化为如下的星型结构 中介者模式的本质: 解耦多个同事对象之间的交互关系,每个对象都持有中介者对象的引用,只跟中介者对象打交道。我们通过中介者对象统一管理这些交互关系 三、应用
MVC模式(其中的c,控制器就是一个中介者对象,M和V都和他 打交道) 窗口游戏程序,窗口软件开发窗口对象也是一个中介者对象 图形界面开发GUI中,多个组件之间的交互,可以通过引入一个中介者对象来解决,可以是整体的窗口对象或者DOM对象 java.lang.reflect.Method#invoke();
|
CopyRight 2018-2019 实验室设备网 版权所有 |