Dragonbuf 4年前

修改理由:

之前的示例代码,解耦不够明确

详细描述:

让人看了不明白具体事件是如何解耦的

相关信息:


此投稿已在 4年前 合并。

内容修改:

红色背景 为原始内容

绿色背景 为新增或者修改的内容

OldNewDifferences
7979   }
8080}
8181
 82// 服务类 去实现事件的创建和触发,不关心具体多少调用方需要监听  
 83class DemoService  
 84{  
 85   public function demo()  
 86   {  
 87       //创建一个事件  
 88       $event = new Event();  
 89         
 90       ...  
 91         
 92       //执行事件 通知旁观者  
 93       $event->trigger();  
 94   }  
 95}  
8296
83 //创建一个事件
84 $event = new Event();
85 //为事件增加旁观者
86 $event->add(new ObServer1());
87 $event->add(new ObServer2());
88 //执行事件 通知旁观者
89 $event->trigger();
 97// 调用方,调用方仅仅需要知道服务类创建了哪些事件
 98class DoService
 99{
 100   public function do()
 101   {
 102       //为事件增加旁观者
 103       $event->add(new ObServer1());
 104       $event->add(new ObServer2());
 105   }
 106}
 107
 108
 109
90110
91111```
92112