• 设计模式之中介者模式(php实现)


    github地址:https://github.com/ZQCard/design_pattern
    /**
     * 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。
     * 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
     * 我们通过聊天室实例来演示中介者模式。实例中,多个用户可以向聊天室发送消息,聊天室向所有的用户显示消息。我们将创建两个类 ChatRoom 和 User。User 对象使用 ChatRoom 方法来分享他们的消息。
     */

    (1)ChatRoom.class.php(聊天室类)

    <?php
    
    namespace Mediator;
    
    class ChatRoom
    {
        public static function showMessage(User $user, $message)
        {
            print_r($user->getName()." says: ".$message);
            echo '<br/>';
        }
    }

    (2)User.class.php (用户类)

    <?php
    
    namespace Mediator;
    
    class User
    {
        private $name;
    
        public function __construct($name)
        {
            $this->name = $name;
        }
    
        public function getName()
        {
            return $this->name;
        }
    
        public function setName($name)
        {
            $this->name = $name;
        }
    
        public function sendMessage($message)
        {
            ChatRoom::showMessage($this, $message);
        }
    }

    (3)mediator.php(客户端)

    <?php
    
    spl_autoload_register(function ($className){
        $className = str_replace('\','/',$className);
        include $className.".class.php";
    });
    
    use MediatorUser;
    
    $robert = new User('Robert');
    
    $join = new User('Join');
    
    $robert->sendMessage('hello, Join');
    
    $join->sendMessage('hello, Robert');
  • 相关阅读:
    快递全面实名制 再也见不到这些奇葩收件名
    遇到难题了,程序员们快来想个办法吧
    我为什么不鼓励所有的程序员写博客?
    如何选择编程语言?
    单机版FastDFS+nginx文件服务器搭建
    质量缩放
    abaqus应力云图
    冷镦钢 Kaltstauchstahl 易切削钢 Automatenstahl
    Latente Wärme
    Unterschied der Wärmedurchgang und Wärmeübergang
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/9164015.html
Copyright © 2020-2023  润新知