PHP中如何实现观察者模式?

简介: 【7月更文挑战第2天】PHP中如何实现观察者模式?

PHP中如何实现观察者模式?

观察者模式是一种行为设计模式,允许你定义一种订阅机制,可以在对象状态改变时通知多个依赖对象。以下是一个简单的PHP观察者模式实现:

// Subject(主题)接口
interface Subject {
   
    public function registerObserver(Observer $observer);
    public function removeObserver(Observer $observer);
    public function notifyObservers();
}

// ConcreteSubject(具体主题)类
class ConcreteSubject implements Subject {
   
    private $observers = [];
    private $state;

    public function getState() {
   
        return $this->state;
    }

    public function setState($state) {
   
        $this->state = $state;
        $this->notifyObservers();
    }

    public function registerObserver(Observer $observer) {
   
        $this->observers[] = $observer;
    }

    public function removeObserver(Observer $observer) {
   
        $index = array_search($observer, $this->observers);
        if ($index !== false) {
   
            unset($this->observers[$index]);
        }
    }

    public function notifyObservers() {
   
        foreach ($this->observers as $observer) {
   
            $observer->update($this);
        }
    }
}

// Observer(观察者)接口
interface Observer {
   
    public function update(Subject $subject);
}

// ConcreteObserver(具体观察者)类
class ConcreteObserver implements Observer {
   
    private $name;

    public function __construct($name) {
   
        $this->name = $name;
    }

    public function update(Subject $subject) {
   
        echo "{$this->name} received an update: " . $subject->getState() . "<br>";
    }
}

// 使用示例
$subject = new ConcreteSubject();
$observer1 = new ConcreteObserver("Observer 1");
$observer2 = new ConcreteObserver("Observer 2");

$subject->registerObserver($observer1);
$subject->registerObserver($observer2);

$subject->setState("New State");

在这个例子中,我们定义了一个Subject接口和一个ConcreteSubject类来实现主题的功能。我们还定义了一个Observer接口和一个ConcreteObserver类来实现观察者的功能。当ConcreteSubject的状态发生变化时,它会通知所有注册的观察者。

目录
相关文章
|
4月前
|
设计模式 PHP
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
31 0
|
4月前
|
设计模式 PHP
php设计模式--观察者模式(4.2)PHP实现观察者模式
php设计模式--观察者模式(4.2)PHP实现观察者模式
31 0
|
设计模式
【PHP-设计模式】观察者模式
【PHP-设计模式】观察者模式
111 0
|
移动开发 PHP 设计模式
|
PHP
PHP设计模式——观察者模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。         观察者模式(有时又被称为发布-订阅模式)。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。
1022 0
|
11天前
|
NoSQL 关系型数据库 MySQL
不是 PHP 不行了,而是 MySQL 数据库扛不住啊
【9月更文挑战第8天】这段内容讨论了MySQL在某些场景下面临的挑战及其原因,并指出这些问题不能完全归咎于MySQL本身。高并发读写压力、数据量增长以及复杂查询和事务处理都可能导致性能瓶颈。然而,应用程序设计不合理、系统架构不佳以及其他数据库选择和优化策略不足也是重要因素。综合考虑这些方面才能有效解决性能问题,而MySQL通过不断改进和优化,仍然是许多应用场景中的可靠选择。
|
23天前
|
存储 SQL 关系型数据库
PHP与MySQL交互的奥秘
【8月更文挑战第29天】在编程的世界里,PHP和MySQL就像是一对默契的舞伴,共同演绎着数据的交响曲。本文将带你探索它们之间的互动,从连接数据库到执行查询,再到处理结果,每一步都充满了节奏与和谐。我们将一起走进这段代码的旅程,感受数据流动的魅力。
|
21天前
|
SQL 关系型数据库 MySQL
PHP与MySQL交互之基础教程
【8月更文挑战第31天】 在数字世界中,数据是推动一切的核心力量。本文将引导你探索PHP与MySQL的协同工作,通过实际代码示例,展示如何建立连接、执行查询以及处理结果集。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你提供宝贵的实践知识。