php工厂模式

php工厂模式

  • 工厂模式: 就是负责生成其他对象的类或方法。
  • 代码 : 实现交通工具接口的类
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();
  • 工厂模式实际就是建立一个统一的类实例化接口,统一调用,统一控制。
  • 工厂模式是PHP项目开发中,最常用的设计模式,一般会配合单例模式一起使用,来加载php类库中的类。
  • 例二
//工厂模式 提供获取某个对象实例的一个接口,同时使调用代码避免确定实例化基类的步骤
//字符串类
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对象