PHP-工廠模式

lemon_lyue發表於2020-06-02

什麼是工廠模式

組裝一臺電腦,需要不同的零件,而工廠模式就像零件製造商一樣,不同的零件不同的工廠負責或者管理著不同的零件工廠,將程式碼進行解耦,不需要在邏輯程式碼中new不同的類,進行一個統一的管理。

工廠模式的實現


<?php

/**

 * 一個運算方法的介面

 * Interface Operation

 */

interface Operation

{

    /**

     * 兩個數的運算

     * @param int $num1

     * @param int $num2

     * @return int

     */

    public function getVal (int $num1, int $num2): int;

}

/**

 * 加法

 * Class Add

 */

class Add implements Operation

{

    public function getVal(int $num1, int $num2): int

    {

        return $num1 + $num2;

    }

}

/**

 * 減法

 * Class Sub

 */

class Sub implements Operation

{

    public function getVal(int $num1, int $num2): int

    {

        return $num1 - $num2;

    }

}

/**

 * 運算工廠(工廠模式)

 * Class CounterFactory

 */

class CounterFactory

{

    private static $operation;// 運算

    /**

     * 建立一個運算

     * @param string $operation

     * @return Add|Sub

     */

    public static function createOperation (string $operation)

    {

        switch ($operation) {

            case '+':

                self::$operation = new Add();

                break;

            case '-':

                self::$operation = new Sub();

                break;

        }

        return self::$operation;

    }

}

$factory = CounterFactory::createOperation('+');

$res = $factory->getVal(1, 2);

var_dump($res);
本作品採用《CC 協議》,轉載必須註明作者和本文連結

lemon_lyue

相關文章