这里是我自己整理的一些资料,大家不懂的可以相互学习呀。。。

单例模式

设计模式 ZZT 1884次浏览 已收录 0个评论

设计模式(二)单例模式

在面向对象中,一个对象只负责一个特定的任务通常是一种很好的选择。例如:你只想
让一个对象去访问数据库。单例模式是一种职责模式,他将创建的对象委托到一个单一的访
问点上。在任何时候,应用程序中都只有这个类仅有的一个实例存在。这可以防止我们去打
开数据库的多个连接或者不必要使用多余的系统资源。在更加复杂的系统中,使用单例模式
在维持应用程序状态同步方面也尤为重要。

使用单例模式和非单例模式的区别

减少类的创建和销毁

使用单例模式内存结构图:
单例模式

没有使用单例模式的内存结构使用图:
单例模式

对比两张内存图的结构,我们可以了解一下信息:
1.没有使用单例模式的构造图很混乱
2.没有使用单例模式的数据库连接对象会随着系统的扩展而变多。
3.没有使用单例模式的数据库链接因为有多个对象操作不同的 SQL,可能会导致业务逻
辑的异常或者是同步的异常。

单例模式的构建

单例类所需的三个公共元素:
1.必须拥有一个构造方法,并且必须被标记为 private(防止外部实例化);
2.拥有一个保存类的实例的静态成员属性(字段)(唯一的实例对象,全局静态对象里面只会存在这一个对象);
3.拥有一个访问这个实例的公共的静态方法(句柄,获取(创建)对象唯一入口)。

代码:


<?php static private $_instance; //保存类的实例静态成员 private function __construct(){//私有构造方法,禁止从外部实例对象,以免创建多个对象 } static public function getInstance() {//句柄,唯一入口 if (!(self::$_instance instanceof self)) { self::$_instance = new self(); echo '创建了一个对象!'; } return self::$_instance; }

结论:

单例模式可以很好的替代全局变量。虽然单例模式也存在和全局变量一样的缺点 ,
比如依赖性,因此我们应当小心谨慎的使用单例模式。


乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明单例模式
喜欢 (0)

文章评论已关闭!