zoukankan      html  css  js  c++  java
  • java设计模式--行为型模式--中介者模式

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

    中介者模式:

      

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

     测试类:

      

     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     
    4     public void action() {
    5         System.out.println("普通员工努力工作");
    6     }
    7 }
    1 public class ColleagueB extends Colleague {
    2 
    3     public void action() {
    4         System.out.println("前台注意了!");
    5     }
    6 }

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

      

  • 相关阅读:
    redhat yum替换成CentOS yum 并修改源
    C++11新特性实验
    常见的安装包制作程序installer
    如何在数据库中删除并添加唯一索引?
    springboot中的restTemplate工具类
    如何使用swagger(一)
    The POM for com.qingmu:entity:jar:1.0.0-SNAPSHOT is missing, no dependency information available
    java.lang.IllegalStateException: Found multiple @SpringBootConfiguration annotated classes
    在使用postman中配置返回html页面
    Springboot中设置返回数据的时间格式
  • 原文地址:https://www.cnblogs.com/huzi007/p/3985995.html
Copyright © 2011-2022 走看看