在php编程中,单例模式虽然不是最常用,但一定是最不可缺少、应用非常广泛的一种设计模式,虽然你可能不太了解它,但只要你有过开发一个完成系统的经历,相信我,你一定使用过它。
单例模式(Singleton Pattern),也被成为单件模式,确保某个类只能有一个正在运行的实例,而且自行实例化并且向系统提供这个实例。有且只有一个 是单例模式最重要的特点。
1.只能有一个实例。
2.必须自行创建这个实例。
3.必须给其他对象提供这一实例。
比如在应用中需要一个日志记录对象,并且需要在整个系统中只使用这一个对象,这时候就需要单例模式。另外一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。
实现一个静态的类方法getInstance(),这个方法只返回该类的唯一实例,当第一次调用这个方法的时候,它创建一个实例,吧它存在一个私有的静态变量之中,并且返回该实例,下一次,他只返回已经创建的实例。
一个日志记录类。
<?php/*** 日志记录类*/class Logger{ //私有化静态变量 static PRivate $instance = NULL; // 私有构造函数,防止实例化对象 private function __construct() { # code... } // 私有克隆函数 private function __clone(){ } // 静态方法,统一访问入口 static public function getInstance(){ if(self::$instance == NULL){ self::$instance = new Logger(); } return self::$instance; } static function Log($str) { }}?>一般要使一个程序中只有一个实例时,会使用全局变量,但不同于面向过程,面向对象的程序设计中应当尽量避免全局变量的出现,所以使用单例模式是一个很好的选择。
新闻热点
疑难解答
图片精选