装饰器模式
来源:互联网 发布:中标数据查询 编辑:程序博客网 时间:2024/06/01 16:33
定义:装饰器模式可以动态的添加修改类的功能
初始的一个类,无任何修饰,只简单的输出helloworld
<?class HelloWorld { protected $output="HelloWorld"; public function output() { echo $this->output; }}$hw=new HelloWorld();$hw->output();
现在运用装饰期模式来给来给该类的输出增加颜色,代码如下
<?php/** * * @authors mtg * @date 2015-08-31 09:45:01 *//*此处的作用是 *定义一个装饰器接口 */interface Decorator{ function before_method(); function after_method(); } /*此处的作用是 *定义一个颜色装饰器 */class ColorDecorator implements Decorator{ protected $color; function __construct($value='') { $this->color=$value; } public function before_method() { echo "<div style='color:".$this->color."'>"; } public function after_method() { echo "</div>"; }}class HelloWorld { protected $decorator=array(); protected $output="HelloWorld"; public function addDecorator(Decorator $decorator) { $this->decorator[]=$decorator; } public function output() { $this->before_op(); echo $this->output; $this->after_op(); } public function before_op(){ if (!empty($this->decorator)) { foreach ($this->decorator as $key => $value) { $value->before_method(); } } } public function after_op() { /*此处的作用是 *需要将装饰器倒序后再调用方法 */ if (!empty($this->decorator)) { $this->decorator=array_reverse($this->decorator); foreach ($this->decorator as $key => $value) { $value->after_method(); } } }}$hw=new HelloWorld();$hw->output();$colordecorator=new ColorDecorator('red');$hw->addDecorator($colordecorator);$hw->output();
0 0
- c++装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器(Decorator)模式
- 浅谈装饰器模式
- java 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器模式
- HDU 1258 Sum It Up 深搜
- 解读Android之Intents和Intent Filters
- 北京工业大学耿丹学院--WANG的BLOG
- 进制->原理本质(个人理解)
- Android 延迟执行
- 装饰器模式
- java - (08) javaEE
- SpringMVC中使用Interceptor拦截器
- __attribute__ 详解
- MDI程序与SDI程序的区别
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
- java并发:ExecutorServiec中的CompletionService和invokeAll的使用
- switch-case-break语句
- ssh 要被自己笨哭了