【发布时间】:2011-09-15 16:22:03
【问题描述】:
我正在尝试理解装饰器模式,并且我已经阅读了关于 SO 的其他相关问题,然后我决定用一个简单的例子来尝试它(我是 PHP 新手):
interface iTitle {
public function getTitle();
}
class Title implements iTitle {
protected $_text;
public function __construct() {
$this->_text='Our page';
}
public function getTitle() {
return $this->_text;
}
}
abstract class TitleDecorator implements iTitle {
protected $_title;
public function __construct(iTitle $title) {
$this->_title=$title;
}
}
class BeforeTitle extends TitleDecorator {
public function getTitle() {
return 'Welcome to '.$this->_title->getTitle();
}
}
class AfterTitle extends TitleDecorator {
public function getTitle() {
return $this->_title->getTitle().', Dear user!';
}
}
这是装饰器模式的(某种)正确实现吗? 如果没有,正确的方法是什么? 如果是,是否可以改进?如何改进? 或者这可能更适合另一种模式?
任何帮助/想法将不胜感激,在此先感谢!
【问题讨论】:
-
我更新了答案,因为我认为我在您的代码中发现了一些小问题。
-
获取标题? O_O 应该是 getTitle
标签: php design-patterns