编程中的那些套路——关于装饰器模式
该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言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),我们需要对文章变量进行润色,我们通过外部的耦合调用,最终返回一篇润色后的文章。
这就是装饰器模式。
该文章属于《编程中的那些经典套路——设计模式汇总》系列
关键字:php, 设计模式, 编程思想, 面试相关
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!