Php工厂模式

php工厂模式

  • 工厂模式: 就是负责生成其他对象的类或方法。
  • 代码 : 实现交通工具接口的类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    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 '飞机靠螺旋桨和机翼的升力飞行。';
    }
    }
  • 代码: 创建工厂类,转码用作类的创建
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class VehicleFactory
    {
    public static function build($className = null)
    {
    $className = ucfirst($className);
    if ($className && class_exists($className)) {
    return new $className();
    }
    return null;
    }
    }
  • 使用:
    1
    2
    3
    VehicleFactory::build('Car')->drive();
    VehicleFactory::build('Ship')->drive();
    VehicleFactory::build('Aircraft')->drive();
  • 工厂模式实际就是建立一个统一的类实例化接口,统一调用,统一控制。
  • 工厂模式是PHP项目开发中,最常用的设计模式,一般会配合单例模式一起使用,来加载php类库中的类。
  • 例二
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    //工厂模式 提供获取某个对象实例的一个接口,同时使调用代码避免确定实例化基类的步骤
    //字符串类
    class String {
    public function write() {}
    }
    //Json类
    class Json {
    public function getJsonData() {}
    }
    //xml类
    class Xml {
    public function buildXml() {}
    }
    //工厂类
    class Factory {
    public static function create($class) {
    return new $class;
    }
    }
    Factory::create("Json"); //获取Json对象