PHP的面向对象中有单态设计模式和多态设计模式,我来简单的说一下单态设计模式
单态设计模式又称单例设计模式,作用是多人使用,最终结果只得到一个对象
我们假设一个多人写作开发的情景,开发人员都需要调用某个类进行实例化操作,例如是我们操作数据库的类,每个开发人员都需要去调用这个类来实例化操作,因此会产生很多实例化对象,例如mysql的最大连接数不能超过300,此时会导致数据库服务不能正常的运行
以下是单态设计模式的思路
1.不能让用户在外面实例化对象 ---------> 封装构造方法
2.调用的时候不能实例化对象 ---------> 提供一个方法用于调用
3.普通方法在外部不能直接调用 ---------> 改为静态方法
4.在方法中我们可以添加判断 -----------> 添加一个属性用于判断
5.在静态方法中不能出现普通属性 --------> 改为静态属性
class Mysql{
static public $link = null;
protected function __construct(){
echo '连接数据库';
}
static public function getConnect(){
if(is_null(self::$link)){
//说明你是第一个进来的,可以让你实例化对象
self::$link = new Mysql;
}
//如果不是第一个进来的,直接调用上一次的
return self::$link;
}
}
我们可以使用 === 来测试一下是否多个实例化,最终结果只得到一个对象
$mysql = Mysql::getConnect();
$mysql2 = Mysql::getConnect();
if($mysql === $mysql2){
echo '是同一个对象';
}else{
echo '不是同一个对象';
}