【发布时间】:2011-06-26 21:25:26
【问题描述】:
嗨,我们(我的一个朋友)有不同的来源(wikis 内容、论坛 cmets、文档上传、RSS 来源......),我们希望在未来的系统中以不同的方式通知它们:Javascript LIVE PUSH (APE),邮件、短信、电话、RSS...
我们为我们的实现考虑了 GoF 观察者设计模式。 观察者设计模式是实现这一目标的好方法吗?
我们考虑使用 Observer 编写代码来格式化要通知的消息(参见示例 1),但也许我们应该向 Observable 返回一个状态以创建消息(参见示例 2)。 就模式而言,这是一个好习惯吗?
如果是,update() 的“真正作用”是什么(默认观察者设计模式方法)?我们真的不明白。
我们在网上找到了这个例子(用于 update() 实现)
1) http://gbenoit79.blogspot.com/2011/04/design-pattern-observer.html
<?php
(...)
class ConcreteObserverA implements SplObserver
{
public function update(SplSubject $subject)
{
echo 'ConcreteObserverA received: ' . $subject->getVariable() . "\n";
}
}
(...)
2) http://www.minte9.com/kb/php-observer-pattern-example-php-programming-advanced-i1365
<?php
(...)
class DriverObserver implements Observer{
public function update(Observable $subject) {
if ($subject->driven_hours >= 8) {
$subject->need_sleep = 1;
} else {
$subject->need_sleep = 0;
}
}
}
(...)
它们都有效吗?
【问题讨论】:
标签: design-patterns observer-pattern