• 技术文章 >php教程 >php手册

    php中的设计模式之--中介模式

    2016-06-21 08:47:11原创577
    朋友1 
    我<-->QQ <---->朋友2 
    	   	<---->朋友13
    
    */
    
    // 抽象中介,QQ聊天 
    
     interface ChatMediator { // 中介者角色
          public function  sendMessage($msg,$user);
          public function  addQQUser($user);
    } 
    
    
    // 抽象用户
     abstract class User {
        protected  $mediator;
        protected  $name;
         
        public function __construct($med, $name){
            $this->mediator = $med;
    		$this->name = $name;
        }
         
        public abstract function send($msg);
        public abstract function receive($msg);
    }
    
    
      class QQchat implements ChatMediator {
     
     // 用户列表 
        private $users;
         
        public function __construct(){
            $this->users = null ;
        }
         
      // 添加用户 
        public function  addQQUser($user){
    		 $this->users[] = $user; 
        }
         
    	//  发送具体的QQ信息通过QQ发送 
        public function sendMessage($msg, $user) {
            foreach($this->users as $k =>$v){
               // 自己发送的自己不能接受  
                if($v != $user){
    		  // 调用好友的接口  
                    $v->receive($msg);
                }
            }
        }
     
    }
    
    
    
    // 具体对象角色
     class QQUser extends User {
        public function send($msg){
            $this->mediator->sendMessage($msg, $this);
        }
    	
    	// 接受  
        public function receive($msg) {
           	echo $this->name.'  receive '.$msg.'
    ' ; } } // client // 中介为QQ $QQchat = new QQchat(); $oMe = new QQUser($QQchat, "张三"); $oFriend1 = new QQUser($QQchat, "李四"); $oFriend2 = new QQUser($QQchat, "王伟"); $oFriend3 = new QQUser($QQchat, "大哥"); // 添加好友 $QQchat->addQQUser($oMe); $QQchat->addQQUser($oFriend1); $QQchat->addQQUser($oFriend2); $QQchat->addQQUser($oFriend3); $oMe->send("Hi All");



    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:
    上一篇:让你精通响应式网页设计的15条建议(1) 下一篇:php的curl也没这么复杂
    Web大前端开发直播班

    相关文章推荐

    • phpMyAdmin 4.0.2 正式发布• web上存漏洞及原理分析、防范方法(安全文件上存方法)• 浅析php变量修饰符static的使用• PHP支持多种格式图片上传(支持jpg、png、gif)• 在Windows系统上安装PHP运行环境文字教程
    1/1

    PHP中文网