装饰器模式允许我们根据运行时不同的情景动态地为某个对象调用前后添加不同的行为动作。

<?php
class HtmlTemplate {
// any parent class methods
} class Template1 extends HtmlTemplate {
protected $_html; public function __construct() {
$this->_html = "<p>__text__</p>";
} public function set($html) {
$this->_html = $html;
} public function render() {
echo $this->_html;
}
} class Template2 extends HtmlTemplate {
protected $_element; public function __construct($s) {
$this->_element = $s;
$this->set("<h2>" . $this->_html . "</h2>");
} public function __call($name, $args) {
$this->_element->$name($args[0]);
}
} class Template3 extends HtmlTemplate {
protected $_element; public function __construct($s) {
$this->_element = $s;
$this->set("<u>" . $this->_html . "</u>");
} public function __call($name, $args) {
$this->_element->$name($args[0]);
}
}

  

最新文章

  1. android 布局 使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题
  2. ubuntu安装ssh
  3. [Java] 对象排序示例
  4. C#实现大数字的运算
  5. Android “NetworkOnMainThreadException”出错原因及解决办法
  6. Ubuntu runlevel修改
  7. IOS 播放音频流媒体
  8. Android开发之自定义Spinner样式的效果实现(源代码实现)
  9. wemall app商城源码Android短信监听接收器
  10. 【swift-总结】函数
  11. 关于jstl的使用
  12. 2#第一个Java程序
  13. 6、Docker存储卷
  14. Python之路-(Django(csrf,中间件,缓存,信号,Model操作,Form操作))
  15. 1、JPA-HelloWorld
  16. centos install jdk
  17. [Algorithm] Maximum Flow
  18. kubernetes 的pod控制器
  19. Android Studio安装Kotlin插件
  20. JS匿名函数理解

热门文章

  1. Linux防火墙iptables配置开放某个端口
  2. 按位&amp;按位|按位~的详解
  3. 我也质疑下petshop
  4. VS2010每次编译都重新编译 解决方案
  5. 学习cocos2dx3.1.0
  6. linux 删除文件后空间没有释放的解决办法
  7. MATLAB批量修改图片名称
  8. JavaScript实现的水果忍者游戏,支持鼠标操作
  9. Codeforces Round #316 (Div. 2) C Replacement 扫描法
  10. 算法马拉松13 A-E解题报告