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 09 PHP
php 文件夹删除、php清除缓存程序
Aug 25 PHP
PHP5 操作MySQL数据库基础代码
Sep 29 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
PHP队列用法实例
Nov 05 PHP
浅析php创建者模式
Nov 25 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
php查询ip所在地的方法
2014/12/05 PHP
php格式化金额函数分享
2015/02/02 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
babel基本使用详解
2017/02/17 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
在Python中使用next()方法操作文件的教程
2015/05/24 Python
python中zip()方法应用实例分析
2016/04/16 Python
python numpy 按行归一化的实例
2019/01/21 Python
python调用其他文件函数或类的示例
2019/07/16 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
优秀教导主任事迹材料
2014/05/09 职场文书
户籍证明书标准模板
2014/09/10 职场文书
交心谈心活动总结
2015/05/11 职场文书