PHP-浅谈单例模式和工厂模式

PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。

单例模式用于在程序中创建一个单一功能的访问点,简单说就是实例的对象是唯一的。因此有几点需要注意:

1、需定义一个构造器,且构造器的作用域需定义为private,即无法在其他调用中直接new一个对象

2、需定义一个静态变量,当作被调用类的实例对象

3、需定义一个静态方法,用于外部调用获取该类的实例静态对象,在这个方法中,返回一个对象引用

例子:

public class School{

    private static $school; //定义一个静态私有变量,用于存储该类中唯一一个实例对象;

    private  function __constrcut(){} //定义私有构造器,防止外部调用时实例化该类

    public static function getInstance(){  //使用getInstance()创建对象

       if(empty(self::$school)){self::$school = new self();}

        return self::$school; //往外部调用返回此类的唯一对象引用

    } 

}

工厂模式是一个类,通过调用该类获取某些类的实例对象,而不需要在方法中直接new一个对象,好处是单一控制对象,避免出现修改对象类型时,遗漏修改调用的地方。只需要通过修改工厂类中的对象,则调用工厂类的所有地方就自动修改了

例子:

定义一个类,在里面定义一个方法,通过传入不同的参数, 获取不同类的对象

public class School{

    public static function getObject($objectName){

        switch ($objectName){

            case 1 : return One::getInstance();break;

            case 2 : return new A();break;

            case 3 : return new B();break;

        }

    }

}

你可能感兴趣的:(PHP-浅谈单例模式和工厂模式)