简单工厂模式


工厂模式,就是负责生成其他对象的类或方法。

1 类实现

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

interface Vehicle
{
    public function drive();
}

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

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

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

再创建一个工厂类,专门用作类的创建,:

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

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

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

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

2 解决

 

 

参考资料:

  1. Design Patterns: The Simple Factory Pattern
  2. Understanding the Factory Method Design Pattern
  3. 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别

1条评论

xflyhack says: 回复

还能不能在给出点具体的使用场景和例子呢

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *