author:咔咔php
WeChat:fangkangfkhtml
我這裏就不在去說那些專業術語了,我本身看着都迷糊。微信
其實能夠想一想平時本身的業務場景,加入咱們的項目有多中支付方式。我以前的寫法就是倆個控制器,點擊哪一個走哪一個方法,這樣也是能夠實現的。可是如今有一個很nice的方式,那就是工廠模式測試
看下面這段代碼,咱們能夠在控制器定義一個接口類,實現繼承的規範,在將三中方式建立三個類,配置各自的支付參數微信支付
在作一個跟前臺交互的類,獲取前臺給咱們的支付方式標識,根據不一樣的支付標識來實例化不一樣的類,實現具體的功能
code
這個文件是直接能夠測試的,放置到本身的環境中,而後運行便可,參數本身傳 htm
<?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();