單例模式
通過提供自身共享實例的訪問,單例設計模式用於限制特定對象只能被創建一次。
使用場景
例如數據庫實例,一般都會走單例模式。
單例模式可以減少類的實例化
代碼:來源InitPHP框架,先檢測類有沒被實例化,實例化了就使用已經存放在靜態變量中的對象實例,沒有則實例化並將對象保存起來。
[php]
/**
* 框架核心加載-框架的所有類都需要通過該函數出去
* 1. 單例模式
* 2. 可以加載-Controller,Service,View,Dao,Util,Library中的類文件
* 3. 框架加載核心函數
* 使用方法:$this->load($class_name, $type)
* @param string $class_name 類名稱
* @param string $type 類別
*/ www.2cto.com
public function load($class_name, $type) {
$class_path = $this->get_class_path($class_name, $type);
$class_name = $this->get_class_name($class_name);
if (!file_exists($class_path)) InitPHP::initError('file '. $class_name . '.php is not exist!');
if (!isset(self::$instance['initphp'][$class_name])) {
require_once($class_path);
if (!class_exists($class_name)) InitPHP::initError('class' . $class_name . ' is not exist!');
$init_class = new $class_name;
self::$instance['initphp'][$class_name] = $init_class;
}
return self::$instance['initphp'][$class_name];
}
作者:initphp