设计模式 您所在的位置:网站首页 中介者模式实例闲置物品交换 设计模式

设计模式

2023-07-14 21:57| 来源: 网络整理| 查看: 265

前言:

 (昨天做了几个俯卧撑搞得现在浑身酸疼o(╥﹏╥)o)

 中介者模式可以看成在公司中,财务部和市场部、研发部等部门,如果没有总经理的话,那么这些部门就需要相互打交道,就形成了n:n的关系,那么这样的关系就会变得很复杂

 但是如果有了总经理(作为中介者),那他们只需要跟总经理打交道就可以了,总经理叫他发钱,那他就发钱,也不用问给谁发钱

 

目录

 

 

 一、代码实现:

  一、类图

二、具体代码实现

  Department:

     Development:

    Finance:

Mediator:

President:

  Client:

 实现结果:

 二、本质

三、应用

 一、代码实现:   一、类图

二、具体代码实现   Department: public interface Department { void selfaction();//做本部门的事情 void outaction();//向总经理发出申请 }      Development: public class Development implements Department{ private Mediator mediator;//他们的经理 public Development(Mediator mediator) { super(); this.mediator = mediator; mediator.register("Development", this);//想经理注册自己 } //本职工作 @Override public void selfaction() { // TODO 自动生成的方法存根 System.out.print("专心科研,开发项目"); } //需求 @Override public void outaction() { // TODO 自动生成的方法存根 System.out.println("汇报工作没钱了,快给钱"); } }     Finance: package mediator; //金融部 public class Finance implements Department{ private Mediator mediator;//经理老哥 public Finance(Mediator mediator) { super(); this.mediator = mediator; mediator.register("Finance", this); } @Override public void selfaction() { // TODO 自动生成的方法存根 System.out.print("数钱"); } @Override public void outaction() { // TODO 自动生成的方法存根 System.out.println("钱太多了,该咋花"); } }

  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 实验室设备网 版权所有