php 设计模式 之 装饰模式
来源:互联网 发布:平凡之路 知乎 编辑:程序博客网 时间:2024/05/17 05:46
概念:
装饰模式: 顾名思义,装饰模式是一种对对象数据的多次过滤,就像装饰一样, 一层层的修饰, 获取满意的结果。装饰模式共分为两个部分:1: 装饰者: 在这个接口接口下面的类和方法用以对数据进行修饰(即对数据进行过滤修改)2: 被装饰者: 这个就是要被过滤的数据接口对象
情景:
炒菜之前要对买来的菜进行拣菜, 洗菜等操作。这个就类似于装饰操作, 装饰者就是洗净的过程操作, 被装饰者就是菜。
实现:
//装饰者 abstract class Decorator { //装饰操作 abstract function process(Cai $cai); } class XiCai extends Decorator { public function process(Cai $cai) { echo '这是个洗菜操作。<br />'; } }//被装饰者 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 '这是个拣菜操作。<br />'; parent::process($cai); //进行下一步过滤 } }//泡菜操作 class PaoCai extends DecorateActor { public function process(Cai $cai) { echo '这是个浸泡操作。<br />'; parent::process($cai); //进行下一步过滤 } }$cai = new QingCai();$process = new JianCai(new PaoCai(new XiCai($cai)));$process->process($cai);
结果:
这是个拣菜操作。这是个浸泡操作。这是个洗菜操作。
总结: 当我们需要对数据进行过滤的时候, 装饰模式可以成为你的选择
0 0
- PHP设计模式中之装饰模式
- PHP设计模式之装饰模式
- Php设计模式之装饰者模式
- PHP设计模式之装饰者模式
- php 设计模式 之 装饰模式
- php 设计模式 之 装饰模式
- php设计模式之装饰器模式
- PHP设计模式之装饰模式
- 【设计模式】之装饰器模式-PHP
- php设计模式之装饰模式
- PHP设计模式之装饰器模式
- php与设计模式之装饰模式
- PHP设计模式之装饰者模式
- PHP设计模式之装饰器模式
- PHP 设计模式之装饰器模式
- PHP设计模式之装饰模式
- PHP设计模式:装饰模式
- php设计模式之装饰器
- Android 开发中常见问题及解决办法(转)
- php 关于下载中文文件实现
- 修改EditText的光标颜色
- 如何提高ES索引创建效率
- 把自己的java程序打包成jar包运行
- php 设计模式 之 装饰模式
- php 设计模式 之 访问者模式
- 详解UICollectionView
- PHP 递归实现冒泡算法
- Groovy闭包深入学习
- Emacs 相关快捷键
- C#取整
- php学习笔记(一)基础部分
- php学习笔记(三)面向对象高级实践