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');
    
  • 相关阅读:
    Java LinkedList 源码剖析
    Java并发编程:线程池的使用
    Java 线程池的原理与实现
    多线程JAVA篇(一)
    软件开发中会用到的图
    linux文件名匹配——通配符使用
    XModem协议
    dmesg 命令七种用法
    定位精度单位CEP、RMS、2DRMS常识
    5G NR 技术简介
  • 原文地址:https://www.cnblogs.com/clivewang/p/9863751.html
Copyright © 2011-2022 走看看