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

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言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, 设计模式, 编程思想, 面试相关

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部