zoukankan      html  css  js  c++  java
  • [php]php设计模式 Mediator (中介者模式)

    1 <?php
    2 /**
    3 * 中介者模式
    4 *
    5 * 用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互
    6 */
    7 abstractclass Mediator
    8 {
    9 abstractpublicfunction send($message,$colleague);
    10 }
    11
    12 abstractclass Colleague
    13 {
    14 private$_mediator=null;
    15
    16 publicfunction Colleague($mediator)
    17 {
    18 $this->_mediator =$mediator;
    19 }
    20
    21 publicfunction send($message)
    22 {
    23 $this->_mediator->send($message,$this);
    24 }
    25
    26 abstractpublicfunction notify($message);
    27 }
    28
    29 class ConcreteMediator extends Mediator
    30 {
    31 private$_colleague1=null;
    32 private$_colleague2=null;
    33
    34 publicfunction send($message,$colleague)
    35 {
    36 if($colleague==$this->_colleague1)
    37 {
    38 $this->_colleague1->notify($message);
    39 } else {
    40 $this->_colleague2->notify($message);
    41 }
    42 }
    43
    44 publicfunction set($colleague1,$colleague2)
    45 {
    46 $this->_colleague1 =$colleague1;
    47 $this->_colleague2 =$colleague2;
    48 }
    49 }
    50
    51 class Colleague1 extends Colleague
    52 {
    53 publicfunction notify($message)
    54 {
    55 echo"Colleague1 Message is :".$message."<br/>";
    56 }
    57 }
    58
    59 class Colleague2 extends Colleague
    60 {
    61 publicfunction notify($message)
    62 {
    63 echo"Colleague2 Message is :".$message."<br/>";
    64 }
    65 }
    66
    67 //
    68 $objMediator=new ConcreteMediator();
    69 $objC1=new Colleague1($objMediator);
    70 $objC2=new Colleague2($objMediator);
    71
    72 $objMediator->set($objC1,$objC2);
    73
    74 $objC1->send("to c2 from c1");
    75 $objC2->send("to c1 from c2");
  • 相关阅读:
    CentOS7 虚拟机搭建、初始设置、简单使用
    Oozie-4.0.0-cdh5.3.6搭建
    ionic开发环境搭建
    nodejs+chromium 创建桌面应用程序
    常用mysql笔记
    javascript 操作 css Rule
    javascript正则表达式笔记
    grunt之dev-pro环境切换
    grunt之入门实践
    动态加载js
  • 原文地址:https://www.cnblogs.com/bluefrog/p/2089406.html
Copyright © 2011-2022 走看看