全局变量是面向对象程序员遇到的引发bug的主要原因之一,这是因为全局变量将类捆绑于特定的环境,破坏了封装,如果新的应用程序无法保证一开始就定义了相同的环境变量,那么一个依赖于全局变量的类就无法从一个应用程序中提取出来并应用到新的应用程序中.
什么是单例模式呢
单例模式顾名思义,就是只有一个实例,作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类我们称之为单例类。
单例模式的要点有三个:
它们必须拥有一个构造函数,并且必须被标记为private,它们拥有一个保存类的实例的静态成员变量,它们拥有一个访问这个实例的公共的静态方法,和普通类不同的是,单例类不能在其他类中直接实例化,单例类只能被其自身实例化,要获得这样的一种结果,__construct()方法必须被标记为private,如果试图用private构造函数构造一个类,就会得到一个可访问性级别的错误.
要让单例类起作用,就必须使其为其他类提供一个实例,用它调用各种方法,单例类不会创建实例副本,而是会向单例类内部存储的实例返回一个引用,结果是单例类不会重复占用内存和系统资源,从而让应用程序的其它部分更好地使用这些资源,作为这一模式的一部分,必须创建一个空的私有__clone()方法,以防止对象被复制或克隆.
返回实例引用的这个方法通常被命名为getInstance(),这个方法必须是静态的,而且如果它还没有实例化,就必须进行实例化,getInstance() 方法通过使用 instanceof 操作符和self 关键字,可以检测到类是否已经被实例化,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
好了,该说书代码了,我们在程序中查询数据的操作会非常非常的多,我们不可能每次都new一个对象,这样太耗费开销了,那么我们怎么办呢,单例模式是个不错的选择,单例模式,只能实例化一次,下面看一下代码.
db.class.php,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
|
数据库的配置文件,db.config.php:
1 2 3 4 5 6 7 8 9 10 |
|
本文地址:
转载随意,但请附上文章地址:-)