PHP 中的观察者模式是一种设计模式,允许观察者订阅主题的状态变化并做出响应。当主题状态更改时,它会通知观察者,观察者可以相应地更新自己:主题类维护一个观察者列表并提供方法附加和删除观察
PHP 中的观察者模式是一种设计模式,允许观察者订阅主题的状态变化并做出响应。当主题状态更改时,它会通知观察者,观察者可以相应地更新自己:主题类维护一个观察者列表并提供方法附加和删除观察者。主题类提供获取和设置状态的方法,当状态更改时触发观察者通知。观察者类定义了一个更新方法,在主题状态更改时调用。具体观察者类实现更新方法以更新自己的逻辑。在实践中,观察者订阅主题,当主题状态更改时,观察者收到通知并更新自己。
PHP 中观察者模式运作原理
简介
观察者模式是一种软件设计模式,允许对象(称为观察者)订阅其他对象(称为主题)的状态变化并对其做出响应。当主题的状态改变时,它会通知所有观察者,而观察者可以相应地更新自己。
代码结构
在 php 中,我们可以使用以下类结构来实现观察者模式:
主题类:
class Subject
{
private $observers = [];
private $state;
public function attach(Observer $observer)
{
$this->observers[] = $observer;
}
public function detach(Observer $observer)
{
$index = array_search($observer, $this->observers);
if ($index !== false) {
unset($this->observers[$index]);
}
}
public function getState()
{
return $this->state;
}
public function setState($state)
{
$this->state = $state;
$this->notifyObservers();
}
private function notifyObservers()
{
foreach ($this->observers as $observer) {
$observer->update($this);
}
}
}
观察者类:
interface Observer
{
public function update(Subject $subject);
}
具体观察者类:
class ConcreteObserver1 implements Observer
{
public function update(Subject $subject)
{
// 更新自己的逻辑
}
}
class ConcreteObserver2 implements Observer
{
public function update(Subject $subject)
{
// 更新自己的逻辑
}
}
实战案例
我们可以使用以下代码示例来说明观察者模式在实践中的应用:
$subject = new Subject();
$observer1 = new ConcreteObserver1();
$observer2 = new ConcreteObserver2();
$subject->attach($observer1);
$subject->attach($observer2);
$subject->setState('New state'); // 触发更新
// 观察者收到更新并相应更新自己
当主题的状态更新时,所有订阅它的观察者都会收到通知并相应更新自己。
以上就是PHP中的观察者模式如何工作?的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: PHP中的观察者模式如何工作?
本文链接: https://lsjlt.com/news/617918.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0