好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php工厂模式和单例模式区别

php工厂模式和单例模式区别

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

header("Content-type: text/html; charset=utf-8");   //定义字符编码,防止乱码
/**
 * 单利类
 */
class Single
{
    private static $_instance;  //保存实例的对象
 
 
    private function __construct()  //定义构造方法
    {
 
    }
 
    private function __clone()  //定义一个空方法防止被外部克隆
    {  
 
    }
 
 
    public static function getInstance()    //定义一个获取实例对象的方法
    {
   if (!(self::$_instance  instanceof Single)) {
  self::$_instance = new self();
   }
   return self::$_instance;   //返回实例对象
    }
 
    /**
* 测试方法
*/
    public function test()
    {
   echo "单利模式";
    }
 
}
 
 
$run=Single::getInstance();
$run->test(); 

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

header("content-type:text/html;charset=utf-8"); //定义字符编码,防止乱码
/**
 * 测试类一
  */
class demo1
{
    //定义一个test1方法
    public function test1()
    {
   echo '这是demo1类的test1方法'.PHP_EOL;
    }
}
/**
 * 测试类二
  */
class demo2
{
    //定义一个test2方法
    public function test2()
    {
   echo '这是demo2类的test2方法'.PHP_EOL;
    }
}
/**
 * 工厂类
 */
class Factoty
{
    // 根据传参类名,创建对应的对象
    static function createObject($className)
    {
   return new $className();
    }
}
/**
 * 通过传类名,调用工厂类里面的创建对象方法
 */
$demo = Factoty::createObject('demo1');
$demo->test1();   // 
输出这是demo1类的test1方法 $demo = Factoty::createObject('demo2'); $demo->test2(); // 输出这是demo2类的test2方法

更多PHP知识,请访问PHP中文网!

以上就是php工厂模式和单例模式区别的详细内容,更多请关注Gxl网其它相关文章!

查看更多关于php工厂模式和单例模式区别的详细内容...

  阅读:40次

上一篇: php的优势是什么

下一篇:php有什么证书