避免深度继承
<?php
class article
{
protected $content;
public function __construct($content)
{
$this->content = $content;
}
public function decorator()
{
return $this->content;
}
}
$art = new article("好好学习");
echo $art->decorator();
//文章需要小编加摘要
class bianArticle extends article
{
public function summary()
{
return $this->content . '小编加了摘要';
}
}
$art = new bianArticle("好好学习");
echo $art->summary();
//又请了SEO要对文字进行处理
class seoArticle extends bianArticle
{
public function seo()
{
}
}
//又请了广告要对文字进行处理
class adArticle extends seoArticle
{
public function ad()
{
}
}
改进
<?php
class BaseArt
{
protected $content;
protected $art = null;//装饰对象
public function __construct($contend)
{
$this->content = $contend;
}
public function decorator()
{
return $this->content;
}
}
//编辑文章摘要
class BianArt extends BaseArt
{
public function __construct($art)
{
$this->art = $art;
$this->decorator();
}
public function decorator()
{
return $this->content = $this->art->content . '小编摘要';
}
}
//加seo关键字
class SeoArt extends BaseArt
{
public function __construct($art)
{
$this->art = $art;
$this->decorator();
}
public function decorator()
{
return $this->content = $this->art->content . '加上SEO关键词';
}
}
//$BA = new BaseArt("day day up");
//echo $BA->decorator();
$bian = new SeoArt(new BianArt(new BaseArt('day day up')));
$bian = new BianArt(new SeoArt(new BaseArt('day day up')));
echo $bian->decorator();
10、装饰模式
最新推荐文章于 2022-04-28 15:31:32 发布