怎么理解中介者模式,我姑且用房产中介来理解吧。呵呵

中介者模式:

  

  1. 中介者模式
  2. 概述
  3. 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
  4.  
  5. 适用性
  6. 1.一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。
  7.  
  8. 2.一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
  9.  
  10. 3.想定制一个分布在多个类中的行为,而又不想生成太多的子类。
  11.  
  12. 参与者
  13. 1.Mediator
  14. 中介者定义一个接口用于与各同事(Colleague)对象通信。
  15.  
  16. 2.ConcreteMediator
  17. 具体中介者通过协调各同事对象实现协作行为。
  18. 了解并维护它的各个同事。
  19.  
  20. 3.Colleagueclass
  21. 每一个同事类都知道它的中介者对象。
  22. 每一个同事对象在需与其他的同事通信的时候,与它的中介者通信

 测试类:

  

  1. public class Test {
  2.  
  3. public static void main(String[] args) {
  4. Mediator med = new ConcreteMediator();
  5. //老板来了
  6. med.notice("boss");
  7.  
  8. //客户来了
  9. med.notice("client");
  10. }
  11. }
  1. public abstract class Mediator {
  2.  
  3. public abstract void notice(String content);
  4. }
  1. public class ConcreteMediator extends Mediator {
  2.  
  3. private ColleagueA ca;
  4.  
  5. private ColleagueB cb;
  6.  
  7. public ConcreteMediator() {
  8. ca = new ColleagueA();
  9. cb = new ColleagueB();
  10. }
  11.  
  12. public void notice(String content) {
  13. if (content.equals("boss")) {
  14. //老板来了, 通知员工A
  15. ca.action();
  16. }
  17. if (content.equals("client")) {
  18. //客户来了, 通知前台B
  19. cb.action();
  20. }
  21. }
  22. }
  1. public abstract class Colleague {
  2. public abstract void action();
  3. }
  1. public class ColleagueA extends Colleague {
  2.  
  3. public void action() {
  4. System.out.println("普通员工努力工作");
  5. }
  6. }
  1. public class ColleagueB extends Colleague {
  2.  
  3. public void action() {
  4. System.out.println("前台注意了!");
  5. }
  6. }

不写代码就看代码,我靠。。。

  

java设计模式--行为型模式--中介者模式的更多相关文章

  1. Java设计模式(16)中介模式(Mediator模式)

    Mediator定义:用一个中介对象来封装一系列关于对象交互行为. 为何使用Mediator模式/中介模式 各个对象之间的交互操作非常多,每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉 ...

  2. Java设计模式(14)责任链模式(Chain of Responsibility模式)

    Chain of Responsibility定义:Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合, ...

  3. Java设计模式(三) 抽象工厂模式

    原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂 ...

  4. Java设计模式(十二) 策略模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern) ...

  5. Java设计模式(二) 工厂方法模式

    本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...

  6. Java设计模式(一) 简单工厂模式不简单

    摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDB ...

  7. Java设计模式(十一) 享元模式

    原创文章,同步发自作者个人博客 http://www.jasongj.com/design_pattern/flyweight/.转载请注明出处 享元模式介绍 享元模式适用场景 面向对象技术可以很好的 ...

  8. Java 设计模式系列(二三)访问者模式(Vistor)

    Java 设计模式系列(二三)访问者模式(Vistor) 访问者模式是对象的行为模式.访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要修改的话,接受这个操作的数据结构则可以 ...

  9. Java 设计模式系列(十)外观模式

    Java 设计模式系列(十)外观模式 门面模式(Facade):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这 ...

  10. Java 设计模式系列(九)组合模式

    Java 设计模式系列(九)组合模式 将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象的使用具有一致性. 一.组合模式结构 Component: 抽象 ...

随机推荐

  1. Android和FTP服务器交互,上传下载文件(实例demo)

    今天同学说他备份了联系人的数据放在一个文件里,想把它存到服务器上,以便之后可以进行下载恢复..于是帮他写了个上传,下载文件的demo 主要是 跟FTP服务器打交道-因为这个东东有免费的可以身亲哈 1. ...

  2. c++ 02

    一.堆内存的动态分配与释放 malloc/calloc/realloc/free new/delete:详见memory.cpp 1.通过new运算符分配单个变量 数据类型* 指针变量 = new 数 ...

  3. flex渐变色制作圆角橙色按钮

    <?xml version="1.0" encoding="utf-8"?> <s:SparkButtonSkin xmlns:fx=&quo ...

  4. handsontable插件HOOK事件

    Hook插件 afterChange (changes: Array, source: String):1个或多个单元格的值被改变后调用     changes:是一个2维数组包含row,prop,o ...

  5. php 对象的一些特性

    class person { private $name; private $age = 2; public function __construct($name,$age) { $this-> ...

  6. sql注入数据库修复方法

    1.第一种情况是 需要将指定的 注入字符串全部替换掉(仅替换注入的字符串为空) declare @delStr nvarchar(500) set @delStr='<script src=ht ...

  7. IoC容器Autofac正篇之简单实例

    先上一段代码. namespace ConsoleApplication3 { class Program { static void Main(string[] args) { ContainerB ...

  8. EffectiveC#18--用IComparable和IComparer实现对象的顺序关系

    1..Net框架提供了接口来描述对象的顺序关系:IComparable 和IComparer. 2.IComparable 为类定义了自然顺序,实现IComparer接口的类可以描述其它可选的顺序 3 ...

  9. React-Native OpenGL体验二

                                  搞了一下午,终于做了几个Demo出来,下面我就说一下我对React-Native下的OpenGL的流畅度的体验吧. 我使用的测试机是坚果手机 ...

  10. PL/SQL 流程控制语句-条件结构,循环结构

    条件结构 一.IF-THEN语句 IF-THEN语句是最简单的IF语句. 语法: IF condition THEN Statements END IF; 例子: declare v_score nu ...