PHP工厂模式

【Single.class.php】

<?php
/**
 * 单例模式
 * 使某个类的实例仅允许创建一个
 */

class Single
{
    private static $ins; //保存对象的静态属性

    //私有的构造方法,屏蔽了外部new操作
    private function __construct()
    {
    }

    //禁止克隆
    private function __clone()
    {
    }

    public static function getInstance()
    {
        if (!(self::$ins instanceof self)) {
            self::$ins = new self();
        }
        return self::$ins;
    }

    public function output()
    {
        return "单例模式输出...";
    }
}

【Factory.class.php】

<?php
/**
 * 工厂模式
 * 使用工厂方法或者类生成对象,而不是在代码中直接new操作
 */

class Factory
{
    public static function getSingleOutput()
    {
        //Single类未使用单例模式之前可以如下调用
        //$obj = new Single();

        //Single类使用了单例模式之后,只能用下面的方法调用
        //不管调用多少次,在Single类中都只会new一次
        $obj = Single::getInstance();
        $obj2 = Single::getInstance();

        return '工厂模式--'.$obj->output();
    }

}

【调用】

////【工厂模式】
//如果需要调用Single类的output方法,现在只需要调用Factory::getSingleOutput即可
//假设 Single::output 方法的名称或参数要修改,只需要修改Factory::getSingleOutput即可
//其他各种地方调用 Factory::getSingleOutput 的代码都不需要修改
echo Factory::getSingleOutput() . '<br>';
原文地址:https://www.cnblogs.com/rxbook/p/10385170.html