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标签云的实现代码
Oct 10 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
非常实用的PHP常用函数汇总
Dec 17 PHP
简单谈谈php浮点数精确运算
Mar 10 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 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
PHP array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php身份证号码检查类实例
2015/06/18 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
javascript高亮效果的二种实现方法
2008/09/14 Javascript
学习ExtJS accordion布局
2009/10/08 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
详解javascript遍历方式
2015/11/11 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
Python对字符串实现去重操作的方法示例
2017/08/11 Python
python学习教程之使用py2exe打包
2017/09/24 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
Java如何格式化日期
2012/08/07 面试题
幼儿园中班下学期评语
2014/04/18 职场文书
三字经教学反思
2014/04/26 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
合作与交流自我评价
2015/03/09 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
pandas 实现将NaN转换为None
2021/05/14 Python
详解如何用Python实现感知器算法
2021/06/18 Python
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript