资讯专栏INFORMATION COLUMN

编程中的那些套路——关于装饰器模式

lavor / 1688人阅读

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP

今天我们来谈谈装饰器模式,想象一个场景:

有一篇帖子

帖子的内容我写好了,

三个部门的人员想控制它.

编辑组要添导读文字

审核组要去敏感字

市场部想在末尾加点广告

我只是一篇帖子,由你们来处置吧。

此时如何处理呢?如何写出符合面向对象三特性五原则的代码呢?由此引出装饰器模式就发挥作用了

一言不合来看看代码:

装饰器模式.php

content = $content;
 
    }
 
    public function decorator(){
 
        return $this->content;
 
    }
 
}
 
//编辑类
 
class Editor extends BaseArt{
 
    public function __construct($ObjArt){
 
         $this->ObjArt = $ObjArt;
 
         $this->decorator();
 
    }
 
    public function decorator(){
 
        return $this->content = $this->ObjArt->content. "#编辑已添加导读";
 
    }
 
}
 
//审核组类
 
class Auditor extends BaseArt{
 
    public function __construct($ObjArt){
 
         $this->ObjArt = $ObjArt;
 
         $this->decorator();
 
    }
 
    public function decorator(){
 
        return $this->content = $this->ObjArt->content. "#审核组已阅";
 
    }
 
}
 
//市场部类
 
class Market extends BaseArt{
 
    public function __construct($ObjArt){
 
         $this->ObjArt = $ObjArt;
 
         $this->decorator();
 
    }
 
    public function decorator(){
 
        return $this->content = $this->ObjArt->content. "#市场部已加广告";
 
    }
 
}
 
$Art = new Market(new Auditor (new Editor (new BaseArt("#基本文章"))));
 
print_r($Art->decorator());
 
?>
 

自始至终所有类(编辑组,审核组,市场部)操作的都是一个变量(文章:$content),我们需要对文章变量进行润色,我们通过外部的耦合调用,最终返回一篇润色后的文章。

这就是装饰器模式。

该文章属于《编程中的那些经典套路——设计模式汇总》系列

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

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

相关文章

  • 编程中的那些套路——关于适配模式

    该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 今天我们来谈谈适配器模式。 想象一个场景: 有一个类方法它部署在服务器上,专门负责大多数语言都通用的JSON语言,而现在我需要调用这个类方法,但我不需要返回JSON格式的数据了,我要返回序列化后的数据,我现在如何处理呢?是上去服务器修改这个类方法吗?这不科学吧?因为我们原本编写好的代码最好就不要再改了,很容易造成...

    gnehc 评论0 收藏0
  • 编程中的那些经典套路——设计模式汇总

    摘要:如果看不懂的话,可以在评论区中提问,我会第一时间回答你无论何时我一直都在嗯哼该文章属于编程中的那些经典套路设计模式汇总系列 在正式阅读前,我先谈谈我们该用什么姿势和心态学习设计模式: 如果你还没有过多的编程经验(泛指半年以下),我建议你把它当做小说来看,能看懂多少是多少,因为半年以下经验的程序员用到设计模式的情况只会出现在面试上,至于实际工作中?相对来说这部分不会由你负责。 如果你已...

    youkede 评论0 收藏0
  • 编程中的那些套路——关于桥接模式

    摘要:该文章属于编程中的那些经典套路设计模式汇总系列,并且以下内容基于语言今天来谈谈桥接模式,桥接模式的功能在于将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果。 该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 今天来谈谈桥接模式,桥接模式的功能在于将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果...

    xioqua 评论0 收藏0
  • 编程中的那些套路——关于工厂模式

    摘要:该文章属于编程中的那些经典套路设计模式汇总系列,并且以下内容基于语言前面我们写了简单工厂模式,编程中的那些套路关于简单工厂模式,但简单工厂模式有一些不足违反开放封闭原则,所以需要设计出一套更加规范的设计模式。 该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 前面我们写了简单工厂模式,《编程中的那些套路——关于简单工厂模式》,但简单工厂模式有一些不足(...

    light 评论0 收藏0
  • 编程中的那些套路——关于简单工厂模式

    摘要:简单工厂模式就是遵循了这一原则,它让不同职责的类各司其职。重点来了,简单工厂模式的不足但是简单工厂模式有一个不足,虽然它遵循了单一职责原则,但它违反了另一条同样很重要的原则开放封闭原则。 该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 面向对象五大原则中有一点非常重要的原则:单一职责原则。 简单工厂模式就是遵循了这一原则,它让不同职责的类各司其职。 ...

    Rocture 评论0 收藏0

发表评论

0条评论

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