背景:普通情况下,当你碰到经常使用的类或者方式时,使用一次就实例化一下,如果运行一个php文件的时候,只调用一次这个方法可能看不出啥差别,但是多次调用的时候,还每一次去实例化,是不是就不太好了呢(每一次实例化是需要消耗资源的)。如果针对后面的情况下,可以通过什么模式,创建唯一的对象,这样是不是省去很多不必要的开销呢!
场景:程序应用中,比如连接数据库并进行操作的时候,刚好就是我们说的这个情况,如果每次操作的时候连接数据库,会带来大量的资源消耗。我们可以通过单例模式,创建唯一的数据库连接对象。运行一个php文件的时候不管你调用多少次数据库操作,连接对象也就只有一次!
示例:
<?php
/*
*
*php设计模式之单例模式
*
**/
namespace Mode;
//单例模式
class Mode{
//私有的静态属性
private static $link;
private function __construct(){
}//防止创建实例
private function __clone(){} //防止克隆对象
//静态公共接口
private static function getInstance(){
if(!(self::$link instanceof self)){
self::$link = new self();
var_dump('01');
}
var_dump('02');
return self::$link;
}
//test方法
public function test(){
$obj = self::getInstance();
//var_dump(8);
}
}
//大家如果想进一步了解的话可以到我csdn主页查看我仿做的thinkphp5的Db写法封装的数据库类或者点击链接https://blog.csdn.net/wangtianyou343/article/details/102766181
$res = Mode::test();
$res = Mode::test();
$res = Mode::test();
$res = Mode::test();
$res = Mode::test();
$res = Mode::test();
运行情况: