author:咔咔
我这里就不在去说那些专业术语了,我自己看着都迷糊。
其实可以想想平时自己的业务场景,加入我们的项目有多中支付方式。我之前的写法就是俩个控制器,点击哪个走哪个方法,这样也是可以实现的。但是现在有一个很nice的方式,那就是工厂模式
看下面这段代码,我们可以在控制器定义一个接口类,实现继承的规范,在将三中方式创建三个类,配置各自的支付参数
在做一个跟前台交互的类,获取前台给我们的支付方式标识,根据不同的支付标识来实例化不同的类,实现具体的功能
这个文件是直接可以测试的,放置到自己的环境中,然后运行即可,参数自己传
header("Content-type: text/html; charset=utf-8");
// 定义支付接口
interface Pay
{
public function payType();
}
/**
* 定义所有支付的类
*/
class Zhifubao implements Pay
{
public function payType()
{
echo '使用支付宝支付';
}
}
class Weixin implements Pay
{
public function payType()
{
echo '使用微信支付';
}
}
class Sanfang implements Pay
{
public function payType()
{
echo '使用第三方支付';
}
}
class selectPay
{
/**
* @param $payType 传递支付方式
* @return Sanfang|Weixin|Zhifubao
*/
public static function facatory($payType)
{
switch ($payType)
{
case 'zhifu bao';
return new Zhifubao();
break;
case 'Weixin';
return new Weixin();
break;
case 'Sanfang';
return new Sanfang();
break;
}
}
}
$transport=selectPay::facatory('Weixin');
$transport->payType();