author:咔咔
WeChat:fangkangfk
我这里就不在去说那些专业术语了,我自己看着都迷糊。
其实可以想想平时自己的业务场景,加入我们的项目有多中支付方式。我之前的写法就是俩个控制器,点击哪个走哪个方法,这样也是可以实现的。但是现在有一个很nice的方式,那就是工厂模式
看下面这段代码,我们可以在控制器定义一个接口类,实现继承的规范,在将三中方式创建三个类,配置各自的支付参数
在做一个跟前台交互的类,获取前台给我们的支付方式标识,根据不同的支付标识来实例化不同的类,实现具体的功能
这个文件是直接可以测试的,放置到自己的环境中,然后运行即可,参数自己传
<?php 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();