author:咔咔

我这里就不在去说那些专业术语了,我自己看着都迷糊。

其实可以想想平时自己的业务场景,加入我们的项目有多中支付方式。我之前的写法就是俩个控制器,点击哪个走哪个方法,这样也是可以实现的。但是现在有一个很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();

【PHP-设计模式】工厂模式_PHP设计模式