PHP很简单PHP经验分享程序员技术栈

设计模式01--简单工厂模式(Simple Factory)

2019-05-30  本文已影响0人  四月不见

一、简介

工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式。本章将要学习的简单工厂模式是工厂方法模式的简洁版,它不属于GoF 23种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门,它的设计思想很简单。

因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式。

二、类结构

简单工厂模式结构如下:

角色 类别 简述
Product 产品类 一般是一个抽象类或是接口
ConcreteProduct 具体的产品类 实现或是继承 Product
Factory 工厂类 用来创建具体的产品

三、UML图

比如,我们有一些类,它们都继承自交通工具类:

四、类实现

1、产品类

interface Vehicle
{
    public function drive();
}

2、具体的产品类

class Car implements Vehicle
{
    public function drive()
    {
        echo '汽车靠四个轮子滚动行走。';
    }
}

class Ship implements Vehicle
{
    public function drive()
    {
        echo '轮船靠螺旋桨划水前进。';
    }
}

class Aircraft implements Vehicle
{
    public function drive()
    {
        echo '飞机靠螺旋桨和机翼的升力飞行。';
    }
}

3、工厂类

简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。简单工厂模式结构比较简单,其核心是工厂类的设计。

class VehicleFactory
{
    public static function build($className = null)
    {
        $className = ucfirst($className);
        if ($className && class_exists($className)) {
            return new $className();
        }
        return null;
    }
}

4、使用案例

工厂类用了一个静态方法来创建其他类,在客户端中就可以这样使用:

VehicleFactory::build('Car')->drive();
VehicleFactory::build('Ship')->drive();
VehicleFactory::build('Aircraft')->drive();

省去了每次都要new类的工作。

五、其它

1、优点

2、缺点

3、适用场景

在以下情况下可以考虑使用简单工厂模式:

上一篇 下一篇

猜你喜欢

热点阅读