PHP设计模式——装饰器模式
来源:互联网 发布:今日头条采集 帝国cms 编辑:程序博客网 时间:2024/06/13 05:45
WEB开发笔记 www.chhua.com 每日练习 PHP设计模式——装饰器模式
装饰器模式与适配器模式的作用几乎是一样的,要深刻的理解装饰模式,就一定要记住“装饰”二字,很明显,就是在之前类的基础上进行一下修饰。也就是说,装饰器模式必须有父类,然后子类对父类进行装饰。
下面用一个实例来说明一下装饰器模式的用法。
我有用策略模式和装饰模式结合的方式来演示
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
<?php/* * * */ class printStr{//创建一个普通类public $msg;public function __construct($msg=""){$this->msg=$msg;}public function getMessage(){return "This getMessage Str Function";} public function addNum($num1,$num2){return $num1+$num2;}} class partentZhuanshi {//父类private $printClass;public function __construct($printClass){$this->printClass=$printClass;} public function addNum($num1,$num2){return $this->printClass->addNum($num1,$num2);//简单的一个委托}} class zhuangshi extends partentZhuanshi{private $printClass;public function __construct($printClass){$this->printClass=$printClass;if ($this->printClass->msg==""){//装饰添加一个异常处理throw new Exception($this->printClass->getMessage());}}public function addNum($num1,$num2){$total=$num1+$num2;if ($total<10){//装饰添加一个异常处理throw new Exception($num1." add ".$num2." < 10");}return $total;}} try {$zhuanshi=new zhuangshi(new printStr("此处如果为空,则抛出异常"));}catch (Exception $e){echo "异常一:".$e->getMessage();} try {echo $zhuanshi->addNum(10,2);//两个数据的和小于10抛出异常}catch (Exception $e){echo "异常二:".$e->getMessage();} ?>
以上一个简单的实例说明了,策略模式用于更改和替换行为,装饰模式则是添加和装饰行为.
自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com
0 0
- php设计模式之———装饰器模式
- php设计模式——装饰器模式
- PHP设计模式——装饰器模式
- PHP设计模式——装饰器模式(decorator)
- PHP设计模式——装饰器模式
- 设计模式——装饰器模式
- 设计模式——装饰器模式
- 设计模式——装饰器模式
- PHP设计模式-装饰器模式
- PHP设计模式-装饰器模式
- php设计模式之装饰器模式
- 【设计模式】之装饰器模式-PHP
- PHP设计模式之装饰器模式
- PHP设计模式之装饰器模式
- PHP 设计模式之装饰器模式
- 设计模式—装饰器模式
- 设计模式—装饰器模式
- 设计模式—装饰模式
- PHP设计模式——无用的空对象模式
- Fragment嵌套Fragment时遇到的那些坑
- 基于Xposed 拦截百度 高德地图 实现根据经纬度 改变当前位置
- 百度地图 获取经纬度为4.9E-324
- 服务器架构前的基础知识补充-持续学习
- PHP设计模式——装饰器模式
- Bootstrap3 CSS样式基本用法总结
- glib使用之哈希表
- Ubuntu安装MySQL-python
- 深入研究 Runtime
- ORB SLAM2运行步骤/怎样跑通orbslam2
- 类加载器的工作原理
- Emmet:HTML/CSS代码快速编写神器
- PHP设计模式——策略模式