php : 单例设计演示
单例 : 保证只有一个实例
<?php
/*
* 单例设计
*/ // 单例: 只能"创造"出它的一个对象实例
class Single{
// 第一步: 私有化构造方法
private function __construct(){ } // 第二步: 定义一个私有静态属性, 初始值为 null
static private $_instance = null; // 第三步: 定义一个静态方法, 判断对象是否已生成并返回该对象
static function GetObject(){
if(!isset(self::$_instance)){ // 还没设置值
$obj = new self();
self::$_instance = $obj;
} // 返回该对象, 保证对象只能指向同一个内存地址
return self::$_instance;
}
} // $obj = new Single(); // Call to private Single::__construct()
$obj1 = Single::GetObject();
$obj2 = Single::GetObject(); echo var_dump($obj1); // #1
echo "<br>";
echo var_dump($obj2); // #1
?>
阅读:
单例模式来设计PHP数据库访问类
http://www.nowamagic.net/librarys/veda/detail/911
----->>>
php : 单例设计演示的更多相关文章
- Spring容器-ApplicationContext的单例设计
Spring容器-ApplicationContext的单例设计 每次通过new创建一个ApplicationContext容器,都会执行refresh方法,看源代码了解到这个refresh方法会 ...
- Swift中简单的单例设计
import Foundation class Test: NSObject { // 提供单例实例 static let shareInstance = Test() // 私有化构造方法 over ...
- JAVA设计模式:单例设计
1.单例设计Singleton的引出 单例设计,从名字上首先可以看出单---即只有一个,例---只的是实例化对象:那么单例也就是说一个类,只产生了一个实例化对象.但是我们都知道,一个类要产生实例化对象 ...
- 算法、数据结构、与设计模式等在游戏开发中的运用 (一):单例设计(Singleton Design)
算法.数据结构.与设计模式等在游戏开发中的运用 (一):单例设计(Singleton Design) 作者: Compasslg 李涵威 1. 什么是单例设计(Singleton Design) 在学 ...
- 通过枚举enum实现单例设计
一.枚举 通过enum关键字来实现枚举,在枚举中需要注意的有: 1. 枚举中的属性必须放在最前面,一般使用大写字母表示 2. 枚举中可以和java类一样定义方法 3. 枚举中的构造方法必须是私有的 通 ...
- (一二三)基于GCD的dispatch_once实现单例设计
要实现单例,关键是要保证类的alloc和init只被调用一次,并且被自身强引用防止释放. 近日读唐巧先生的<iOS开发进阶>,受益匪浅,通过GCD实现单例就是收获之一,下面把这个方法与大家 ...
- [Python]python面向对象 __new__方法及单例设计
__new__ 方法 使用 类名() 创建对象时,Python 的解释器 首先 会 调用 __new__ 方法为对象 分配空间 __new__ 是一个 由 object 基类提供的 内置的静态方法,主 ...
- Python中的单例设计
01. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟的解决方案 使用 设计模式 是为了可重用代码.让代码更容易被他人理解.保 ...
- 【iOS 单例设计模式】底层解析与运用
[iOS 单例设计模式]底层解析与运用 一.单例设计名词解释: (官方解释)单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例.(形象比喻)程序 — 公司 单例实例 - 管理 ...
随机推荐
- 检测中文长度gbk下2个字节
//$str = 'fff&sdf你是sdf好fdf啊b歌hello中world';$str = 'd你b_fff是好啊歌中潺潺 ';echo chineselength($str).&quo ...
- 在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker
Ubuntu Trusty带来的是3.13.0 Linux kernel ,需要准备所有ubuntu库的某些条件,docker安装包被称之为docker.io.(注:Ubuntu (和Debian)包 ...
- 如何让VMware低版本运行VMware高版本创建的虚拟机
如何让VMware低版本运行VMware高版本创建的虚拟机 问题描述: 本机安装的VMware Workstation是10版本,之前VMware Workstation 11版本创建的虚拟机,在运行 ...
- Windows平台配置免安装的MySQL
1.下载 官网下载免安装文件(本文使用的是mysql-5.6.33-win32.zip)解压到E:\MySQL\mysql-5.6.33打开E:\MySQL\mysql-5.6.33\my-defau ...
- 深入SpringBoot:自定义Endpoint
前言 上一篇文章介绍了SpringBoot的PropertySourceLoader,自定义了Json格式的配置文件加载.这里再介绍下EndPoint,并通过自定EndPoint来介绍实现原理. En ...
- oracle数据导出工具sqluldr2
oracle数据导出工具sqluldr2可以将数据以csv.txt等格式导出,适用于大批量数据的导出,导出速度非常快.导出后可以使用oracle loader工具将数据导入.下载完sqluldr2,工 ...
- TCP状态变迁图
服务端,端口的状态变化 先在本机(IP地址为:192.168.1.10)配置FTP服务,然后在其它计算机(IP地址为:192.168.1.1)访问FTP服务,从TCPView看看端口的状态变化. 下面 ...
- Thinkphp--------为什么Thinkphp会默认进入Index控制器的index方法
最近遇到两个刚学PHP的童鞋,都问到了同一个问题,就是他们没有做什么配置,为什么访问入口文件index.php的时候会自动跳转到IndexController里面的index方法.他们想知道具体怎么回 ...
- 隐藏,显示任务栏,桌面 C++代码
HWND desktop,task; desktop=FindWindow(L"ProgMan",NULL); task=FindWindow(L"Shell_TrayW ...
- Fitnesse在eclipse中的调试
需要在Fitnesse的wik中添加: '''此句话专门用来Debug'''!define COMMAND_PATTERN {java -Xdebug -Xrunjdwp:transport=dt_s ...