PHP设计模式之委托模式定义与用法简单示例


Posted in PHP onAugust 13, 2018

本文实例讲述了PHP设计模式之委托模式定义与用法。分享给大家供大家参考,具体如下:

委托模式:

通过分配或委托至其他对象,委托设计模式能够去除核心对象中的判决和复杂的功能性。

class Bank{
  protected $info;
  /*
  设置基本信息
  @param string $type 类型。例如"RMB"
  @param int $money 利率。例如"0.4%"
  */
  public function updateBrankInfo($type,$money){
    $this->info[$type]=$money;
  }
  /*
  相关操作(包括存款、取款操作)
  @param int $branktype 操作类型
  */
  public function brankWithdraw($branktype){
    $obj=new $branktype;
    return $obj->brankMain($this->info);
  }
}
/*
委托接口
*/
interface Delegate{
  /*
  操作方法:
  实现该接口必须实现的方法
  */
  public function brankMain($info);
}
/*
存款操作类
*/
class brankDeposit implements Delegate{
  /*
  存款操作
  */
  public function brankMain($info){
    echo $info['deposit'];
  }
} 
/*
取款操作类
*/
class brankWithdraw implements Delegate{
  /*
  取款操作
  */
  public function brankMain($info){
    echo $info['withdraw'];
  }
}
/*
客户端测试代码:
*/
$bank=new Bank();
$bank->updateBrankInfo("deposit","4000");
$bank->updateBrankInfo("withdraw","2000");
$bank->brankWithdraw("brankDeposit");
echo "<br>";
$bank->brankWithdraw("brankWithdraw");

运行结果:

4000
2000

传统方式:

在传统方式下,我们需要判断当前操作是取款操作还是存款操作,在分别调用Bank类中的取款操作和存款操作。

委托模式:

在委托模式下,我们将不需要客户端的判断操作,对客户端来说,需要什么操作,直接传入操作类型即可,Bank类可自动判断操作类型,返回相应操作的操作结果。当我们的操作类型非常多的时候,在客户端用if else判断无疑是很可怕的,再假如我们在很多地方都要有这块判断代码,我们需要对这些地方的判断代码都进行修改(加入后来添加的判断),而采用委托模式,我们仅仅需要在新添加的地方添加相应需要的类型即可,不需要改动其它地方的客户端代码(很大程度上提高了代码的复用性)。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP初学者头疼问题总结
Jul 08 PHP
PHP 七大优势分析
Jun 23 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
PHP多线程类及用法实例
Dec 03 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
May 06 PHP
php微信公众号开发之欢迎老朋友
Oct 20 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
Yii Framework框架开发微信公众平台示例
Apr 26 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 #PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 #PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 #PHP
PHP+ajax实现二级联动菜单功能示例
Aug 10 #PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 #PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 #PHP
PHP检查端口是否可以被绑定的方法示例
Aug 09 #PHP
You might like
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
php date()日期时间函数详解
2010/05/16 PHP
php连接数据库代码应用分析
2011/05/29 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
2010/04/29 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
vant实现购物车功能
2020/06/29 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
Final类有什么特点
2012/04/25 面试题
DTD的含义以及作用
2014/01/26 面试题
和平主题的演讲稿
2014/01/12 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
企业公益活动策划方案
2014/08/24 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
端午节活动总结报告
2015/02/11 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
暂住证明怎么写
2015/06/19 职场文书
一文搞懂php的垃圾回收机制
2021/06/18 PHP
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫