PHP设计模式之拜托模式定义与用法简便示例
发布时间:05/20 来源:未知 浏览:
关键词:
本文实例讲述了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 "
"; $bank->brankWithdraw("brankWithdraw");
运转结果:
4000
2000
传统方式:
在传统方式下,我们需要判断当前操纵是取款操纵还是存钱操纵,在离别调用Bank类中的取款操纵和存钱操纵。
拜托模式:
在拜托模式下,我们将不需要客户端的判断操纵,对客户端来说,需要什么操纵,直接传入操纵类型即可,Bank类可主动判断操纵类型,返回响应操纵的操纵结果。当我们的操纵类型非常多的时候,在客户端用if else
判断无疑是很可怕的,再假设我们在很多地方都要有这块判断代码,我们需要对这些地方的判断代码都停止修改(参加后来增加的判断),而采用拜托模式,我们仅仅需要在新增加的地方增加响应需要的类型即可,不需要改动其它地方的客户端代码(很大程度上提高了代码的复用性)。