1. 程式人生 > >【PHP-設計模式】工廠模式

【PHP-設計模式】工廠模式

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();