PHP工厂设计模式

2018-07-10  本文已影响106人  老衲灬
1、什么是工厂设计模式

1)根据传递不同的类名参数,返回不同类的对象;
2)工厂模式,就是生产各种的不同类的对象;
3)工厂模式,改变了在类外使用new关键字创建对象的方式,改成了在工厂类中创建类的对象。
4)在类的外部我们无法控制类的行为,但在类内部自己可以控制类的行为。

2、工厂设计模式的要求

1)工厂类中的方法,应该是公共的静态的方法;
2)该方法功能:就是根据传递的不同参数,去创建不同的类实例;
3)提示:工厂设计模式,一般会与单例设计模式搭配使用。

3、实例:工厂设计模式的简单应用 图片.png
4、实例:单例工厂类的实现
class Student{
    public $name = "张三";
    public $age = 20;
    public function __construct(){
        echo $this->name."的年龄是".$this->age."岁"."<br>";
    }
}
class Teacher{
    public $name = "李四";
    public $edu = "湖南大学";
    public function __construct(){
        echo $this->name."毕业于".$this->edu."<br>";
    }
}
//定义最终单例工厂类
//工厂类生产的对象是单例
final class Factory
{
    //私有的静态的保存不同类对象的属性
    private static $obj= [];
    //私有的构造方法:阻止类外new对象
    private function __construct(){}
    //私有的克隆方法:阻止类外clone对象
    private function __clone(){} 
    //公共的静态的创建不同类对象的方法
    public static function getInstance($className){
        //判断传递的当前类的对象是否存在
        if(!isset(self::$obj[$className])){
            self::$obj[$className] = new $className;
        }
        //返回当前类的对象
        return self::$obj[$className];
    }
}
$obj1 = Factory::getInstance('Student');
$obj2 = Factory::getInstance('Student');
$obj3 = Factory::getInstance('Teacher');
$obj4 = Factory::getInstance('Teacher');
var_dump($obj1,$obj2,$obj3,$obj4);

结果如下:


图片.png
上一篇 下一篇

猜你喜欢

热点阅读