资讯专栏INFORMATION COLUMN

php 设计模式 之 装饰模式

zhkai / 3269人阅读

摘要:概念装饰模式顾名思义,装饰模式是一种对对象数据的多次过滤,就像装饰一样,一层层的修饰,获取满意的结果。实现装饰者装饰操作这是个洗菜操作。总结当我们需要对数据进行过滤的时候,装饰模式可以成为你的选择

概念:
装饰模式: 顾名思义,装饰模式是一种对对象数据的多次过滤,就像装饰一样, 一层层的修饰, 获取满意的结果。
装饰模式共分为两个部分:
1: 装饰者: 在这个接口接口下面的类和方法用以对数据进行修饰(即对数据进行过滤修改)
2: 被装饰者: 这个就是要被过滤的数据接口对象
情景:
  炒菜之前要对买来的菜进行拣菜, 洗菜等操作。这个就类似于装饰操作, 装饰者就是洗净的过程操作, 被装饰者就是菜。
实现:
 //装饰者
 abstract class Decorator
 {
     //装饰操作
    abstract function process(Cai $cai);
 }

 class XiCai extends Decorator
 {
    public function process(Cai $cai)
    {
        echo "这是个洗菜操作。
"; } } //被装饰者 abstract class Cai { abstract function getGanJingZhi(); } //青菜 class QingCai extends Cai { public function getGanJingZhi() { return 2; } } //白菜 class BaiCai extends Cai { public function getGanJingZhi() { return 3; } } //让已经装饰的装饰者再进行新的装饰,表示多步过滤 abstract class DecorateActor extends Decorator { protected $decorator; public function __construct(Decorator $d) { $this->decorator = $d; } function process(Cai $cai) { $this->decorator->process($cai); } } //拣菜操作 class JianCai extends DecorateActor { public function process(Cai $cai) { echo "这是个拣菜操作。
"; parent::process($cai); //进行下一步过滤 } } //泡菜操作 class PaoCai extends DecorateActor { public function process(Cai $cai) { echo "这是个浸泡操作。
"; parent::process($cai); //进行下一步过滤 } } $cai = new QingCai(); $process = new JianCai(new PaoCai(new XiCai($cai))); $process->process($cai);
结果:
这是个拣菜操作。
这是个浸泡操作。
这是个洗菜操作。

总结: 当我们需要对数据进行过滤的时候, 装饰模式可以成为你的选择

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/20852.html

相关文章

  • PHP设计模式装饰模式

    摘要:装饰器模式解决的问题修饰模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。可以看到,这样的模型很具有扩者性,我们可以轻松的添加其他装饰器给区域对象,且不需要更改其他类, 装饰器模式解决的问题 修饰模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。 将所有的功...

    Olivia 评论0 收藏0
  • PHP设计模式装饰模式

    摘要:概念装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 概念 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的...

    CloudwiseAPM 评论0 收藏0
  • php装饰模式

    装饰者模式概念 动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案 装饰者模式结构图 showImg(https://segmentfault.com/img/bVKmnl?w=1040&h=795); 装饰者角色 1.被装饰者基类(Compoent):对象组件2.待装饰对象(ConcreteComponent):具体组件角色,即将要被装饰增加功能的类3.装饰者基类(De...

    pf_miles 评论0 收藏0
  • PHP设计模式装饰模式

    摘要:后盾人人人做后盾定义装饰对象装饰器规范的接口被装饰者后盾网抽象装饰器维护装饰链条的抽象类装饰器用于装饰被装饰者装饰器

    GitCafe 评论0 收藏0
  • PHPer月工作总结观察者&装饰模式

    摘要:我们可以把取消发货单和取消订单看成一个被观察或被订阅的类实例的对象,一旦发生取消行为,我们立即通知各个观察者做出相对应的行为。装饰器模式装饰器思想,不管以前业务逻辑,甚至不去读,调用之前的接口装饰上新的数据,达到自己的目的。 前言 还是每月的目标至少写一篇文章,一晃八月份就要过去了,这个月依然没有什么产出,毫无疑问最近的状态就是不停的工作,不停的加班。所以还是把最近工作进行一个总结,首...

    MadPecker 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<