PHP设计模式-代理模式

  代理就是帮别人代干某事。例如,我每个月都要去银行交一次水费。

interface Payable
{
	public function pay($amount);
}

class MyAccount implements Payable
{

	public function pay($amount)
	{
		echo "交水费";
	}
}
    后来,同事告诉我,现在都不用到银行交消费了,通过支付宝就可以了(即支付宝也必须实现pay())。于是我把我的银行帐号与支付宝绑定.

class AlipayAccount implements Payable
{
	//我的银行帐户
	protected $_myBankAccount;

	public function __construct($account)
	{
		$this->_myBankAccount = $account;
	}

	public function pay($amount)
	{
		$this->_myBankAccount->pay();
	}
}
       这样我以后交水费都不用往银行跑,直接用支付宝交钱就可以了。这就是代理模式,即我通过支付宝来支付我的水费。这样我还觉得麻烦,那支付宝又提供了一个功能就是每月定时交水费。支付宝每月会到自来水公司查询系统查询到我当月的水费交缴数额。然后每月自动交费。这功能太好了。那我就可以完全解脱出来了。

class AlipayAccount implements Payable
{
	//我的银行帐户
	protected $_myBankAccount;

	public function __construct($account)
	{
		$this->_myBankAccount = $account;
	}

	//每月自动支付
	public function payEveryMonth()
	{
		//代码略
	}

	//获取本月水费额
	public function getAmount()
	{
		//代码略
	}

	//支付
	public function pay($amount)
	{
		$this->_myBankAccount->pay();
	}
}
        这样看来,代理模式可以在不用修改原代码功能的基础上,可以添加新功能。并且能从复杂的逻辑中解脱出来。这就是它的优点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值