zoukankan      html  css  js  c++  java
  • 实现PHP内部的通知机制,如当一个类的属性发生变化时,另外一个类就可以收到通知

    设计模式:观察者模式

    当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新。

    使用场景

    一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理逻辑,当更新得逻辑增多之后,代码会变得难以维护,这种方式是耦合的,侵入式的,增加新的逻辑需要改变事件主题的代码。观察者模式实现了低耦合,非侵入式的通知与更新机制。

    参考链接

    PHP 观察者模式

    <?php
    abstract class EventGenerator
    {
    	public $observers = [];
    	public function addObservers(Observer $observer)
    	{
    		$this->observers[] = $observer;
    	}
    	public function notify($info = '')
    	{
    		foreach ($this->observers as $observer) {
    			$observer->getInfo($info);
    		}
    	}
    }
    
    interface Observer
    {
    	function getInfo($info = '');
    }
    
    class Observer1 implements Observer
    {
    	
    	public function getInfo($info = '')
    	{
    		echo $info;
    	}
    }
    
    class Events extends EventGenerator
    {
    	private $info = 'init';
    
    	public function trigger($info = '')
    	{
    		echo "before:".$this->info."
    ";
    		$this->info = $info;
    		echo "after:".$this->info."
    ";
    		$this->notify($info);
    	}
    }
    
    $event = new Events();
    $event->addObservers(new Observer1());
    $event->trigger('hello world');
    
  • 相关阅读:
    学习进度(第十四周)
    学习进度(第十三周)
    程序员修炼之道阅读笔记03
    程序员修炼之道阅读笔记02
    学习进度(第十二周)
    冲刺进度条10
    冲刺进度条09
    冲刺进度条08
    寒假学习进度报告2
    寒假学习进度报告1
  • 原文地址:https://www.cnblogs.com/clivewang/p/9863751.html
Copyright © 2011-2022 走看看