PHP设计模式单一实例的实例分析
Singleton模式(工作模式):
总之,一个对象(在学习设计模式之前,需要更清楚地意识到面向对象的想法)负责特定的任务;
单类:
1,构造函数需要标记为私有(访问控制:防止外部代码使用新的操作符来创建对象),单例类不能在其他类中实例化,只能由它自己实例化。
2。具有保存类实例的静态成员变量
3、有访问该实例的静态方法(常用getInstance()来实例化单例类的方法,和instanceof运算符可以用来检测是否已经实例化的类)。
此外,该__clone()方法需要建立防止物体被复制(克隆)
为什么要使用PHP单例模式
1,PHP的应用主要是基于数据库应用,因此在应用程序中会有大量的数据库操作。使用单实例模式可以避免大量新操作所消耗的资源。
2,如果需要一个类来控制全局的配置信息,则可以方便地实现单例模式。这可以在ZF FrontController部分看到的。
3,在页面请求中,调试很容易,因为所有代码(如数据库操作类DB)都集中在一个类中。我们可以设置钩子和类输出日志,以免到处var_dump,回声。
代码实现:
< PHP
1
*设计模式单一模式
* $ _instance必须声明为静态私有变量
*构造函数和析构函数必须声明为私有的,防止外部程序新
*类因此失去了单一模式的意义。
* getInstance()方法必须设置为公共的,这个方法必须调用
*返回对实例的引用
*:操作员只能访问静态和静态函数。
*新对象消耗内存
*使用场景:最常见的地方是数据库连接。
*在使用单一模式生成对象之后,
*这个对象可以被许多其他对象使用。
* /
类丹丽{
保存类静态成员变量的实例
私有静态_instance美元;
私有标记的构造方法
私有函数__construct(){
echo'this是一个构造方法;;
}
/ /创建__clone方法防止复制对象的克隆
公共功能__clone(){
trigger_error('clone是不允许的!,e_user_error);
}
用于访问的单例方法,公共静态方法的示例
公共静态函数getInstance(){
如果(!(自::_instance美元是自)){
自::_instance美元=新的自我;
}
回归自我::_instance美元;
}
公共功能测试(){
回声'呼叫方法是成功的';
}
}
新建私有类构造函数标记错误
/ / $丹丽=新丹利();
与双冒号的正确方法::运算符访问静态方法获取示例
$丹丽=丹丽::getInstance();
大理美元->测试();
/ /复制(克隆)会导致e_user_error
danli_clone =克隆丹丽美元美元;
希望本文能对大家的PHP程序设计有所帮助。