定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(publish/subscribe)模式、模型-视图(model/view)模式、源-监听器(source/listener)模式或从属者(dependents)模式。观察者模式是一种对象行为型模式。观察者模式定义对象的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新!
<?php
/**
* 观察者模式
* @author: Mac
* @date: 2012/02/22
*/
abstract class Pa
{
private $_observers = array();
public function register($sub)
{
}
public function trigger()
{
}
}
class Paper extends Pa
{ /* 主题 */
private $_observers = array(); // 存放new的对象
public function register($sub)
{ /* 注册观察者 */
$this->_observers[] = $sub;
}
public function trigger()
{ /* 外部统一访问 */
if (!empty($this->_observers)) {
foreach ($this->_observers as $observer) {
$observer->update();
}
}
}
}
/**
* 观察者要实现的接口
*/
interface Observerable
{
public function update();
}
class Subscriber1 implements Observerable //观察者
{
public function update()
{
echo "观察者1收到执行通知 执行完毕\n";
}
}
class Subscriber2 implements Observerable //观察者2
{
public function update()
{
echo "观察者2收到执行通知 执行完毕\n";
}
}
/* 测试 */
$paper = new Paper();
$paper->register(new Subscriber1());
$paper->trigger();观察者模式是一种使用频率非常高的设计模式,无论是移动应用、Web应用或者桌面应用,观察者模式几乎无处不在,它为实现对象之间的联动提供了一套完整的解决方案,凡是涉及到一对一或者一对多的对象交互场景都可以使用观察者模式。
相关推荐:
简介PHP轻论坛是一个简单易用的PHP论坛程序,适合小型社区和个人网站使用。v3.0版本是完全重构的版本,解决了之前版本中的所有已知问题,特别是MySQL保留字冲突问题。主要特点• 简单易用:简洁的界面,易于安装和使用• 响应式设计:适配各种设备,包括手机和平板• 安全可靠:避免使用MySQL保留字,防止SQL注入• 功能完善:支持分类、主题、回复、用户管理等基本功能• 易于扩展:模块化设计,便于
21
立即学习“PHP免费学习笔记(深入)”;
以上就是php设计模式之观察者模式详解的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号