PHP设计模式

简单工厂模式

沃斯卡娅工业区

工厂模式

目的

用接口来规范对象,让子类决定实例化哪一个类。

代码

<?php
/**
 * Created by PhpStorm.
 * User: retr
 * Date: 2018/10/30
 * Time: 2:16 PM
 */

/**
 * 定义汽车的接口
 * Interface Car
 */

interface Car {

    public function getName();

}

/**
 * 定义特斯拉汽车类 实现接口 Car
 * Class Tesla
 */
class Tesla implements Car
{
    private $name = 'Tesla';

    public function getName()
    {
        // TODO: Implement getName() method.

        return $this->name;
    }

}

/**
 * 定义奔驰汽车类 实现接口 Car
 * Class Benz
 */
class Benz implements Car
{
    private $name = 'Benz';

    public function getName()
    {
        // TODO: Implement getName() method.

        return $this->name;
    }

}

/**
 * 实现车辆工厂
 * Class CarFactory
 */
class CarFactory
{
    /**
     * @param null $type
     * @return Benz|null|Tesla
     */
    public static function createCar($type = null)
    {
        switch ($type){

            case 'Tesla':
                return new Tesla();
                break;
            case 'Benz':
                return new Benz();
                break;
            default:
                return null;

        }
    }
}

$benz = CarFactory::createCar('Benz');

$Tesla = CarFactory::createCar('Tesla');

var_dump($benz);

var_dump($Tesla);

Github

简单工厂模式

发表评论