欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php设计模式-单例模式

程序员文章站 2022-09-26 17:14:25
所谓单例,一个类通过接口提供一个实例,不能通过new或者clone创建新的实例。 单例的实现关键,通过一个静态的方法 getInstance实现的,这个方法只返回该类的唯一实例,第一次调用该方法的时候,他创建一个实例,把他存在一个私有的静态变量中,下一次只需要把之前创建的实例返回,即可达到单例的效果 ......

所谓单例,一个类通过接口提供一个实例,不能通过new或者clone创建新的实例。

单例的实现关键,通过一个静态的方法 getInstance实现的,这个方法只返回该类的唯一实例,第一次调用该方法的时候,他创建一个实例,把他存在一个私有的静态变量中,下一次只需要把之前创建的实例返回,即可达到单例的效果

 1 class Log {
 2         static private $instance = NULL;
 3 
 4         private function __construct(){
 5         }
 6 
 7         private function __clone(){
 8         }
 9         
10         function log( $str ) {
11             echo $str . PHP_EOL;
12         }
13 
14         static function getInstance(){
15             if( self::$instance == NULL ) {
16                 self::$instance = new Log();
17             }
18             return self::$instance;
19         }
20     }
21 
22     Log::getInstance()->log( "warning info" );
23     Log::getInstance()->log( "error info" );
24     //下面的报错
25     new Log();

这里把构造函数和__clone方法声明为private是防止使用者,不小心用new或者clone生成新的实例