单例模式
来源:互联网 发布:打开telnet端口命令 编辑:程序博客网 时间:2024/06/05 18:50
单例模式(Singleton Pattern)顾名思义,通过这种模式可以保证系统中一个类只有一个实例。
作为一种常用的软件设计模式,单例模式经常被用在数据库操作、缓存、线程池等方面。因为对这些操作来说,只有一个实例很重要,可以避免很多的new操作和连接关闭等操作,减少对系统和内存资源的消耗。
单例模式主要有三个要点:
- 该类只能有一个实例;
- 它必须自行创建这个实例;
- 它必须向整个系统提供这个实例。
实现单例模式类的要点主要有三点:
- 该类只提供私有的构造函数;
- 类定义中含有一个该类的静态私有对象;
- 该类提供一个静态的公有的函数用于创建或获取它本身的静态私有对象。
<?php/** * @Author: hongxuan * @Date: 2016-05-11 00:45:24 * @Last Modified by: hongxuan * @Last Modified time: 2016-05-11 01:21:00 *//** * 单例模式 */class Singleton{//私有静态成员变量,保存类实例private static $_instance = null;/** * 私有的构造函数,只能被其自身实例化,防止外界实例化对象 */private final function __construct(){echo "this is construct function";}/** * 私有的__clone()方法,确保单例类不能被复制或克隆 * @return [type] [description] */private function __clone(){}/** * 静态公有方法,创建或获取它本身的静态私有对象,是单例模式的统一访问入口 * @return Singleton 返回唯一对象实例 */public static function getInstance(){if(!(self::$_instance instanceof self)){self::$_instance = new self;}return self::$_instance;}/** * 类中的其它方法 * @return [type] [description] */public function getName(){echo "this is getName function";}}//获取实例$test = Singleton::getInstance();$test->getName();?>
使用这一模式的缺点:
- 每次对象请求引用都要检查类的实例是否存在,这需要一些少量的开销;
- 彼此间的依赖关系比较隐蔽,难以调试;
- 因为不能用传统的new方法来创建实例,这可能会发生开发混淆。
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- Notification集合(二)
- Android基础——1.系统架构&SDK目录
- bzoj4519【CQOI2016】不同的最小割
- <DFS> N皇后问题
- 解读vmstat中的ACTIVE/INACTIVE MEMORY
- 单例模式
- Centos6.5 oracle11gR2 rac安装
- 对数据库范式的理解
- 理解 %IOWAIT (%WIO)
- 《深入浅出WPF》学习笔记之二
- jsonc库的安装以及简单使用
- bzoj4542【HNOI2016】大数
- Eclipse发布项目默认编译输出目录改为WEB-INF/classes
- 欢迎使用CSDN-markdown编辑器