zoukankan      html  css  js  c++  java
  • 中介者模式

    中介者模式(Mediator)就是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
    
    对于中介对象而言,所有相互交互的对象,都视为同事类,中介对象就是用来维护各个同事对象之间的关系,所有的同事类都只和中介对象交互,也就是说,中介对象是需要知道所有的同事对象的。
    当一个同事对象自身发生变化时,它是不知道会对其他同事对象产生什么影响,它只需要通知中介对象,“我发生变化了”,中介对象会去和其他同事对象进行交互的。
    这样一来,同事对象之间的依赖就没有了。
    有了中介者之后,所有的交互都封装在了中介对象里面,各个对象只需要关心自己能做什么就行,不需要再关心做了之后会对其他对象产生什么影响,也就是无需再维护这些关系了。

     

     1 <?php
     2 
     3 /**
     4  * 我们通过聊天室实例来演示中介者模式。
     5  * 实例中,多个用户可以向聊天室发送消息,聊天室向所有的用户显示消息。
     6  * 我们将创建两个类 ChatRoom 和 User。User 对象使用 ChatRoom 方法来分享他们的消息。
     7  *
     8  * 所有的同事类都与中介者有交互
     9  */
    10 
    11 class ChatRoom
    12 {
    13     public static function showMsg(User $user, $msg)
    14     {
    15         echo "<br/>", $user->getName()," __ ", $msg, ' __ ', date("Y-m-d H:i:s", time());
    16     }
    17 }
    18 
    19 
    20 class User
    21 {
    22     private $_name;
    23 
    24     public function __construct($name)
    25     {
    26         $this->_name = $name;
    27     }
    28 
    29     public function getName()
    30     {
    31         return $this->_name;
    32     }
    33 
    34     public function sendMsg($msg)
    35     {
    36         ChatRoom::showMsg($this, $msg);
    37     }
    38 }
    39 
    40 
    41 
    42 
    43 $u1 = new User("A");
    44 $u2 = new User("B");
    45 
    46 $u1->sendMsg("I'm A");
    47 $u2->sendMsg("I'm B");
    View Code
  • 相关阅读:
    Android四大组件--事务详解(转)
    Android课程---关于数据存储的学习(3)之数据库和事务
    初学DW资料——js的prompt的返回值
    初学DW资料——target=的理解
    初学JAVA资料——链表
    初学JAVA资料——哈希表
    初学JAVA资料——线程
    初学JAVA——代码练习(验证字符串结束字符)
    初学JAVA——代码练习(数学运算)
    初学JAVA——代码练习(字符串)
  • 原文地址:https://www.cnblogs.com/hangtt/p/6265199.html
Copyright © 2011-2022 走看看