首页 > 编程 > PHP > 正文

简述PHP设计模式中的装饰者模式

2020-03-22 19:00:19
字体:
来源:转载
供稿:网友
本篇文章主要简述PHP设计模式中的装饰者模式,感兴趣的朋友参考下,希望对大家有所帮助。

定义:

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

角色:

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

示例代码:

//被装饰者基类interface Component{  html' target='_blank'>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;  }} //具体装饰类Aclass 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;  }} //具体装饰类Bclass 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();

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php操作MySQL数据库及session对话的方法

php常用的三种遍历树的技巧

php实现mysql数据库分卷备份

以上就是简述PHP设计模式中的装饰者模式的详细内容,更多请关注 其它相关文章!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表