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 相关文章推荐
编译问题
Oct 09 PHP
用PHP产生动态的影像图
Oct 09 PHP
PHP+DBM的同学录程序(3)
Oct 09 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
php中使用__autoload()自动加载未定义类的实现代码
Feb 06 PHP
php实现的Cookies操作类实例
Sep 24 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
用php+ajax新建流程(请假、进货、出货等)
Jun 11 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 PHP
PHP 进度条函数的简单实例
Sep 19 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
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
js读取配置文件自写
2014/02/11 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python服务器端收发请求的实现代码
2014/09/29 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
python发送邮件功能实现代码
2016/07/15 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
大学毕业感言
2014/01/10 职场文书
付款承诺函范文
2015/01/21 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
员工加薪申请报告
2015/05/15 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server