PHP-工厂模式

什么是工厂模式

组装一台电脑,需要不同的零件,而工厂模式就像零件制造商一样,不同的零件不同的工厂负责或者管理着不同的零件工厂,将代码进行解耦,不需要在逻辑代码中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);

更多内容关注个人博客:lemonlyue.github.io/

本作品采用《CC 协议》,转载必须注明作者和本文链接
lemon_lyue
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!