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 从数据库提取二进制图片的处理代码
Sep 09 PHP
php处理restful请求的路由类分享
Feb 27 PHP
CodeIgniter安全相关设置汇总
Jul 03 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
php去除头尾空格的2种方法
Mar 16 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
PHP操作mysql数据库分表的方法
Jun 09 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 14 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
Jan 10 PHP
PHP chop()函数讲解
Feb 11 PHP
yii2的restful api路由实例详解
May 14 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/05/04 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
php构造函数与析构函数
2016/04/23 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
javascript document.execCommand() 常用解析
2009/12/14 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
关于JS解构的5种有趣用法
2019/09/05 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
python打开网页和暂停实例
2014/09/30 Python
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
Python使用pymysql小技巧
2017/06/04 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
HTML5新增加的功能详解
2016/09/05 HTML / CSS
业务员岗位职责范本
2013/12/15 职场文书
学生请假条格式
2014/04/11 职场文书
软件售后服务方案
2014/05/29 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
介绍信范文大全
2015/05/07 职场文书
征求意见函
2015/06/05 职场文书
重温入党誓词主持词
2015/06/29 职场文书
会议简讯范文
2015/07/20 职场文书
vue3中的组件间通信
2021/03/31 Vue.js