php单例模式和工厂模式

单例模式:防止重复实例化,避免大量的new操作,减少消耗系统和内存的资源,使得有且仅有一个实例对象

class Single
{
    public static $_instance;    //保存实例的对象

    private function __construct()  //定义构造方法
    {
    }

    private function __clone()    //定义一个空方法防止被外部克隆
    {
    }

    public static function getInstance()  //定义一个获取实例对象的方法
    {
        if (!self::$_instance) {
            self::$_instance = new self();
        }
        return self::$_instance;    //返回实例对象
    }

    public function test()    //测试方法
    {
        echo "单利模式";
    }
}

$single = Single::getInstance();  //访问创建实例的方法
$single->test();

工厂模式:用工厂方法代替new操作的一种模式,如果需要更改所实例化的类名,只需在工厂方法内修改,不需逐一寻找代码中具体实例化的地方

/**
 * 测试类一
  */
class demo1
{
    //定义一个test1方法
    public function test1()
    {
        echo '这是demo1类的test1方法'.PHP_EOL;
    }
}
/**
 * 测试类二
  */
class demo2
{
    //定义一个test2方法
    public function test2()
    {
        echo '这是demo2类的test2方法'.PHP_EOL;
    }
}
/**
 * 工厂类
 */
class Factoty
{
    // 静态方法用于创建demo1对象
    static function createDemo1()
    {
        return new demo1();
    }
    // 静态方法用于创建demo2对象
    static function createDemo2()
    {
        return new demo2();
    }
}
/**
 * 调用工厂类里面的各各静态方法来创建对应的实例对象
 */
$demo1 = Factoty::createDemo1();
$demo1->test1();  //输出这是demo1类的test1方法
$demo2 = Factoty::createDemo2();
$demo2->test2();  //输出这是demo2类的test2方法

猜你喜欢

转载自www.cnblogs.com/legendheng/p/9082266.html