加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP设计模式之装饰者模式代码实例

发布时间:2020-05-23 22:59:13 所属栏目:PHP 来源:互联网
导读:这篇文章主要介绍了PHP设计模式之装饰者模式代码实例,装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能,本文就给出了代码实例,需要的朋友可以参考下

定义:

装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能。传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多。

角色:

Component(被装饰对象基类) ConcreteComponent(具体被装饰对象) Decorator(装饰者基类) ContreteDecorator(具体的装饰者类)

示例代码:

<div class="jb51code">
<pre class="brush:php;">
//被装饰者基类
interface Component
{
public function operation();
}

//装饰者基类
abstract class Decorator implements Component
{
protected $component;

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

public function operation()
{
$this->component->operation();
}
}

//具体装饰者类
class ConcreteComponent implements Component
{
public function operation()
{
echo 'do operation'.PHP_EOL;
}
}

//具体装饰类A
class ConcreteDecoratorA extends Decorator {
public function construct(Component $component) {
parent::construct($component);

}

public function operation() {
parent::operation();
$this->addedOperationA(); // 新增加的操作
}

public function addedOperationA() {
echo 'Add Operation A '.PHP_EOL;
}
}

//具体装饰类B
class ConcreteDecoratorB extends Decorator {
public function construct(Component $component) {
parent::construct($component);

}

public function operation() {
parent::operation();
$this->addedOperationB();
}

public function addedOperationB() {
echo 'Add Operation B '.PHP_EOL;
}
}

class Client {

public static function main() {
/
do operation
Add Operation A
/
$decoratorA = new ConcreteDecoratorA(new ConcreteComponent());
$decoratorA->operation();

/*
do operation
Add Operation A 
Add Operation B 
*/
$decoratorB = new ConcreteDecoratorB($decoratorA);
$decoratorB->operation();

}

}

Client::main();

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读