电话

    0411-39943997

仟亿科技
客服中心
  • 电话
  • 电话咨询:0411-39943997
  • 手机
  • 手机咨询:15840979770
    手机咨询:13889672791
网络营销 >更多
您现在的位置:首页 > 新闻中心 > 常见问题

浅谈php布局中单例模式Singleton

作者:billionnet 发布于:2012/8/24 11:41:41 点击量:

单例模式程序代码:
 
1 2 /**
3 * 单例模式
4 *
5 * 保证一个类仅有一个实例,并提供一个访问它的全局访问点
6 *
7 */
8 class Singleton
9 {
10      static private $_instance = null;
11
12      private function __construct()
13      {
14      }
15
16      static public function getInstance()
17      {
18          if(is_null(self::$_instance)) {
19              self::$_instance = new Singleton();
20          }
21          return self::$_instance;
22      }
23
24      public function display()
25      {
26          echo "it is a singlton class function";
27      }
28 }
29
30 // $obj = new Singleton(); // 声明不能成功
31 $obj = Singleton::getInstance();
32 var_dump($obj);
33 $obj->display();
34
35 $obj1 = Singleton::getInstance();
36 var_dump(($obj === $obj1));
 
php布局应用Singleton分析如以上代码所反映,
单例模式属于创建型模式,它是设计模式中最简单的一种模式,当然它的使用也是无处不在的。

单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。

当需要控制一个类的实例数量,且调用者可以从一个公共的众所周知的访问点访问时,我们就可以考虑使用单例模式了。

我们用 UML 来设计单例模式,当然在以后的设计模式的设计部分,我们都将采用 UML 来描述我们的设计,这样就更为形象化了。


从 UML 设计图中我们可以看出,为了让一个类只有一个实例,它必须创建一个静态变量,然后我们用一个公共静态的 Instance() 的方法来创建它,但是为了避免这个类自身的构造函数可以创建对象,我们将构造函数设置成 protected 或者 private,这样外部就只能通过 Instance() 的方法来创建一个静态的 Singleton 类。看来这样我们达到了我们的目的,接下来我们看代码:

view source
print?1 public class Singleton  { 

2     private static Singleton instance; 

3     protected Singleton() 

4     public static Singleton Instance() { 

5         if(instance != null) instance = new Singleton(); 

6         return instance; 

7     } 

8 }

由此看来,实现单例模式我们可以做下列几步:

在类中创建一个静态变量,变量类型为当前类;
在类中创建一个公共的静态方法,让用户可以通过此方法创建此类的静态对象;
最后将构造函数设置为 protected 或者 private。

 



分享到:


Copyright@ 2011-2016 版权所有:大连千亿科技有限公司 辽ICP备11013762-3号   google网站地图   百度网站地图   网站地图

公司地址:大连市沙河口区中山路692号辰熙星海国际2317 客服电话:0411-39943997 QQ:2088827823 37482752

法律声明:未经许可,任何模仿本站模板、转载本站内容等行为者,本站保留追究其法律责任的权利! 隐私权政策声明