当前位置:首页 > PHP教程 > php面向对象 > 列表

PHP设计模式之委托模式定义与用法简单示例

发布:smiling 来源: PHP粉丝网  添加日期:2018-10-13 14:00:44 浏览: 评论:0 

本文实例讲述了PHP设计模式之委托模式定义与用法。分享给大家供大家参考,具体如下:

委托模式:

通过分配或委托至其他对象,委托设计模式能够去除核心对象中的判决和复杂的功能性。

  1. class Bank{ 
  2.   protected $info
  3.   /* 
  4.   设置基本信息 
  5.   @param string $type 类型。例如"RMB" 
  6.   @param int $money 利率。例如"0.4%" 
  7.   */ 
  8.   public function updateBrankInfo($type,$money){ 
  9.     $this->info[$type]=$money
  10.   } 
  11.   /* 
  12.   相关操作(包括存款、取款操作) 
  13.   @param int $branktype 操作类型 
  14.   */ 
  15.   public function brankWithdraw($branktype){ 
  16.     $obj=new $branktype
  17.     return $obj->brankMain($this->info); 
  18.   } 
  19. /* 
  20. 委托接口 
  21. */ 
  22. interface Delegate{ 
  23.   /* 
  24.   操作方法: 
  25.   实现该接口必须实现的方法 
  26.   */ 
  27.   public function brankMain($info); 
  28. /* 
  29. 存款操作类 
  30. */ 
  31. class brankDeposit implements Delegate{ 
  32.   /* 
  33.   存款操作 
  34.   */ 
  35.   public function brankMain($info){ 
  36.     echo $info['deposit']; 
  37.   } 
  38. }  
  39. /* 
  40. 取款操作类 
  41. */ 
  42. class brankWithdraw implements Delegate{ 
  43.   /* 
  44.   取款操作 
  45.   */ 
  46.   public function brankMain($info){ 
  47.     echo $info['withdraw']; 
  48.   } 
  49. /* 
  50. 客户端测试代码: 
  51. */ 
  52. $bank=new Bank(); 
  53. $bank->updateBrankInfo("deposit","4000"); 
  54. $bank->updateBrankInfo("withdraw","2000"); 
  55. $bank->brankWithdraw("brankDeposit"); 
  56. echo "<br>"
  57. $bank->brankWithdraw("brankWithdraw"); 

运行结果:

4000

2000

传统方式:

在传统方式下,我们需要判断当前操作是取款操作还是存款操作,在分别调用Bank类中的取款操作和存款操作。

委托模式:

在委托模式下,我们将不需要客户端的判断操作,对客户端来说,需要什么操作,直接传入操作类型即可,Bank类可自动判断操作类型,返回相应操作的操作结果。当我们的操作类型非常多的时候,在客户端用if else判断无疑是很可怕的,再假如我们在很多地方都要有这块判断代码,我们需要对这些地方的判断代码都进行修改(加入后来添加的判断),而采用委托模式,我们仅仅需要在新添加的地方添加相应需要的类型即可,不需要改动其它地方的客户端代码(很大程度上提高了代码的复用性)。

Tags: PHP设计模式 PHP委托模式

分享到: