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 相关文章推荐
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
php实现encode64编码类实例
Mar 24 PHP
php关联数组快速排序的方法
Apr 17 PHP
php把数组值转换成键的方法
Jul 13 PHP
php利用fsockopen GET/POST提交表单及上传文件
May 22 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
PHP实现验证码校验功能
Nov 16 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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下载文件名中解决乱码的问题
2013/06/20 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
很酷的javascript loading效果代码
2008/06/18 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
详解Python设计模式之策略模式
2020/06/15 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
C#基础面试题
2016/10/17 面试题
教师求职推荐信范文
2013/11/20 职场文书
采购部部门职责
2013/12/15 职场文书
中学运动会广播稿
2014/01/19 职场文书
国际贸易专业求职信
2014/06/04 职场文书
教室布置标语
2014/06/26 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
员工辞职信范文大全
2015/05/12 职场文书
反邪教观后感
2015/06/11 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
详解Vue slot插槽
2021/11/20 Vue.js