Php 开发网站时何时使用观察者模式?
我需要一些在开发网站时可以使用observer模式的实例。。(使用php) 我有一个“当用户发布文章(主题)时,类RSS和类电子邮件(观察者)将修改RSS并向管理员发送电子邮件”,但我甚至不确定这是否是一个好的示例 您在哪里使用观察者模式 顺便说一句:这不是家庭作业,我只是躺在这里思考这个模式:) 已编辑Php 开发网站时何时使用观察者模式?,php,design-patterns,observer-pattern,Php,Design Patterns,Observer Pattern,我需要一些在开发网站时可以使用observer模式的实例。。(使用php) 我有一个“当用户发布文章(主题)时,类RSS和类电子邮件(观察者)将修改RSS并向管理员发送电子邮件”,但我甚至不确定这是否是一个好的示例 您在哪里使用观察者模式 顺便说一句:这不是家庭作业,我只是躺在这里思考这个模式:) 已编辑 我更好奇的是“何时做”而不是“如何做”我有一个对象(单元格)集合(数组)作为“cellCollection”对象的属性。为了减少内存使用,每个单元实际上都以序列化形式保存在缓存中(磁盘文件、A
我更好奇的是“何时做”而不是“如何做”我有一个对象(单元格)集合(数组)作为“cellCollection”对象的属性。为了减少内存使用,每个单元实际上都以序列化形式保存在缓存中(磁盘文件、APC、memcache等等),而“cellCollection”对象保存指向缓存位置的指针数组。我使用观察者模式,以便在修改“cell”对象时通知“cellCollection”对象,以便它可以在缓存中更新该“cell”对象的主副本,并根据需要调整其指针。在几乎无状态的PHP中,通常不需要观察者模式
但是,请考虑以下几点。我跳过了一些代码,但您应该能够填补空白
class Stats extends Observer implements SplObserver
{
private function updateStats($action) { }
public function update(SplSubject $subject)
{
if ($subject instanceOf Article)
{
if ($subject->notice == Article::NOTICE_POSTED_ARTICLE)
{
$this->updateStats($subject->notice);
}
}
}
}
class Article extends Subject implements SplSubject
{
const NOTICE_POSTED_ARTICLE = "Article Posted";
private $observers;
public $notice;
public function postArticle($text)
{
$this->notice = self::NOTICE_POSTED_ARTICLE;
$this->notify();
}
public function notify()
{
foreach ($this->observers as $observer)
{
$observer->update($this);
}
}
}
每次“动作”发生时,我都使用它。这些东西包括每种实体(用户、内容、标记等)上的基本CRUD,但也包括许多其他操作(用户登录、用户注销、模块加载、模块退出等) 我还更喜欢在加载某些内容之后、保存某些内容(插入或更新到数据库)之前或呈现某些内容(例如表单)之前使用
Visitor
模式来改变数据的结构
在一次页面加载中,操作可能会发生多次。我可能听起来像个傻瓜,但。。。你能用php实现吗??缓存中需要什么类型的数据?你有我可以学习的链接吗?是的,你可以用PHP来做,否则我就做不到了!讨论中的应用程序是PHPExcel,其中Excel工作表可以有数千个单元格,每个单元格都是工作表的cellCollection对象引用的对象。几篇关于使用观察者模式的文章:或者,由于您的类文章扩展了“Subject”,如果notify()、$observators和$notice在父类中的何处不是更好吗?无论如何,它可以作为一个例子,thxs