test code

 1 <?php
 2     abstract class Mediator{
 3         abstract public function send($message, $colleague);
 4     }
 5 
 6     abstract class Colleague{
 7         private $_mediator = null;
 8         public function __construct($mediator){
 9             $this->_mediator = $mediator;
10         }
11 
12         public function send($message){
13             $this->_mediator->send($message, $this);
14         }
15 
16         abstract public function notify($message);
17     }
18 
19     class ConcreteMediator extends Mediator{
20         private $_colleague1 = null;
21         private $_colleague2 = null;
22         public function send($message, $colleague){
23             if($colleague == $this->_colleague1){
24                 $this->_colleague2->notify($message);
25             }else{
26                 $this->_colleague1->notify($message);
27             }
28         }
29 
30         public function set($colleague1, $colleague2){
31             $this->_colleague1 = $colleague1;
32             $this->_colleague2 = $colleague2;
33         }
34     }
35 
36     class Colleague1 extends Colleague{
37         public function notify($message){
38             echo 'Colleague1 recv :'.$message;
39         }
40     }
41 
42     class Colleague2 extends Colleague{
43         public function notify($message){
44             echo 'Colleague2 recv: '.$message;
45         }
46     }
47 
48     $mediator = new ConcreteMediator();
49     $objC1 = new Colleague1($mediator);
50     $objC2 = new Colleague2($mediator);
51 
52     $mediator->set($objC1,$objC2);
53 
54     $objC1->send('to c2 from c1');
55     echo '<br>';
56     $objC2->send('to c1 from c2');
57 ?>



 

posted @ 2016-03-17 17:03  zhongyinghe  阅读(290)  评论(0)    收藏  举报