首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

php设计方式——单例模式

2012-11-06 
php设计模式——单例模式单例模式概念单例模式是指整个应用中类只有一个对象实例的设计模式。单例模式的特点

php设计模式——单例模式
单例模式概念单例模式是指整个应用中类只有一个对象实例的设计模式。单例模式的特点一个类在整个应用中只有一个实例类必须自行创建这个实例必须自行向整个系统提供这个实例php中使用单例模式的原因我用php大部分操作都是和各种数据库打交道,包括mysql,redis,memcache等各种关系型和非关系型数据库,所以一个应用中会存在大量连接数据库的操作,如果不用单例模式,那每次都要new操作,但是每次new都会消耗大量的内存资源和系统资源,而且每次打开和关闭数据库连接都是对数据库的一种极大考验和浪费。贴出我之前常用的不好的数据库连接代码,给大家一个错误示范:

<?phpclass Singleton{/** * Description:(1)静态变量,保存全局实例,跟类绑定,跟对象无关 *             (2)私有属性,为了避免类外直接调用 类名::$instance,防止为空 */private static $instance;/** * Description:数据库连接句柄 */private $db;/** * Description:私有化构造函数,防止外界实例化对象 */private static function __construct(){}/** * Description:私有化克隆函数,防止外界克隆对象 */private function __clone(){}/** * Description:静态方法,单例访问统一入口 * @return Singleton:返回应用中的唯一对象实例 */public static function GetInstance(){if (!(self::$instance instanceof self)){self::$instance = new self();}return self::$instance;}/** * Description:获取数据库的私有方法的连接句柄 */public function GetDbConnect(){return $this->db;}}
需要一个保存类的唯一实例的静态成员变量(通常$instance为私有变量)
构造函数和克隆函数必须声明为私有的,为了防止外部程序new类从而失去单例模式意义必须提供一个访问这个实例的公共静态方法,从而返回唯一实例的一个引用

热点排行