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 数组实例说明
Aug 18 PHP
删除数组元素实用的PHP数组函数
Aug 18 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
Mar 02 PHP
PHP中文分词 自动获取关键词介绍
Nov 13 PHP
php日历制作代码分享
Jan 20 PHP
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
phpmailer绑定邮箱的实现方法
Dec 01 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
Element Input组件分析小结
2018/10/11 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
Python面向对象之Web静态服务器
2019/09/03 Python
详解python破解zip文件密码的方法
2020/01/13 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
荟萃全球保健品:维他购
2018/05/09 全球购物
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP