php 装饰模式代码,PHP的设计模式-装饰者模式

装饰者模式

装饰者模式

装饰者模式类似蛋糕,有草莓味、奶酪等种类,但是它们的核心都是蛋糕。

不断地将对象添加装饰的设计模式叫做 装饰者模式(Decorator)

注意:

装饰 边框与被装饰物的一致性

PHP代码实现

9aa79f4b7551

1571209934450.jpg

interface Decorator

{

public function display();

}

/**

* 核心类

*/

class XiaoFang implements Decorator

{

private $name;

public function __construct($name)

{

$this->name = $name;

}

public function display()

{

echo "我是" . $this->name . "我要出门" . PHP_EOL;

}

}

/**

* 装饰边框类

*/

class Finery implements Decorator

{

private $componment;

public function __construct(Decorator $componment)

{

$this->componment = $componment;

}

public function display()

{

$this->componment->display();

}

}

/**

* 装饰物类1

*/

class Shoes extends Finery

{

public function display()

{

echo "穿上鞋子" . PHP_EOL;

parent::display();

}

}

/**

* 装饰物类2

*/

class Fire extends Finery

{

public function display()

{

echo "出门前整理头发" . PHP_EOL;

parent::display();

echo "出门后整理头发" . PHP_EOL;

}

}

$xiaofeng = new XiaoFang("小方");

$shoes = new Shoes($xiaofeng);

$fire = new Fire($shoes);

$fire->display();

总结

在装饰着模式中,装饰类(小方)和被装饰物(出门操作)具有一致性。在程序中,装饰物Finery类(以及它的子类)与表示被装饰物的XiaoFang类有相同的接口。可以随时增加新的打扮类,只该类继承Finery类(装饰类)并调用父类的同名方法。

该模式中用到了委托,它使类之间形成了弱关系。不改变框架代码的前提,就可以生成一个与其他对象具有不用关系的新对象。

缺点:导致程序中增加许多功能类似的很小的类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值