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
一个程序下载的管理程序(二)
Oct 09 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
php实现的漂亮分页方法
Apr 17 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 PHP
php实现简易聊天室应用代码
Sep 23 PHP
php获取图片信息的方法详解
Dec 10 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
PHP钩子与简单分发方式实例分析
Sep 04 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 PHP
PHP遍历数组的6种方式总结
Nov 17 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
短波收音机简介
2021/03/01 无线电
php array_map()数组函数使用说明
2011/07/12 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
对于Python的Django框架部署的一些建议
2015/04/09 Python
python获取一组数据里最大值max函数用法实例
2015/05/26 Python
python抓取网页中链接的静态图片
2018/01/29 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
python批量修改xml属性的实现方式
2020/03/05 Python
python 实现单例模式的5种方法
2020/09/23 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
详细的大学生创业计划书模板
2014/01/27 职场文书
银行贷款承诺书
2014/03/29 职场文书
大学班级文化建设方案
2014/05/06 职场文书
保护环境倡议书500字
2014/05/19 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
简历自我评价模板
2015/03/11 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书