设计模式之装饰器模式

文章类获取初始的文章内容

1
2
3
4
5
6
7
8
9
10
11
12
13
class Art
{
protected $content = null;

public function __construct($content) {
$this->content = $content;
}

public function decorator() {
return $this->content;
}
}

定义装饰文章类
art 参数 保存着 文章类的初始化对象

1
2
3
4
5
6
7
8
9
10
11
12
13
class ArtDesc extends Art
{
protected $art = null;

public function __construct($art)
{
$this->art = $art;
}

public function decorator() {

}
}

SEO类和AD类继承装饰器类达到对文章内容的添加的效果

1
2
3
4
5
6
7
8
9
10
11
12
13
class SeoArt extends ArtDesc
{
public function decorator()
{
return $this->art->decorator().'SEO KEYWORDS';
}
}

class AdArt extends ArtDesc {
public function decorator() {
return $this->art->decorator().'广告内容';
}
}

调用
将初始化文章基础对象 传入装饰器类

1
2
3
4
$art = new Art('文章内容');
$art = new SeoArt($art);
$art = new AdArt($art);
echo $art->decorator();