php -- 设计模式 之 单例模式
2024-10-20 21:10:25
实现单例的条件:三私一公
三私:私有化构造方法:不让外部创建对象
私有化克隆方法:不让外部克隆对象
私有静态属性:保存已经产生的对象
一公:公共静态方法:在类内部创建对象
实例:
<?php //单例模式:一个类只能创造一个对象 class Single{
//属性
private $name;
public static $counts = 0; //定义一个静态属性来保存对象
private static $single; //私有化构造方法
private function __construct($name){
$this->name = $name;
//计数
self::$counts++;
} //私有化克隆方法
private function __clone(){
//计数
self::$counts++;
} //静态方法,让类进入到类的内部进行实例化得到对象
public static function getInstance($name){
//判断对象是否已经存在,如果存在则直接返回原来对象,否则创造新对象
if(self::$single){
//对象已经存在,返回原来对象
}else{
//对象不存在
self::$single = new Single($name);
} //返回对象
return self::$single;
}
} //实例化
//$single = new Single('林志炫'); //访问类对象数量
//echo Single::$counts; //得到对象
$single = Single::getInstance('马云');
var_dump($single); //访问类对象数量
echo Single::$counts; //得到对象
$single = Single::getInstance('马化腾');
var_dump($single); //访问类对象数量
echo Single::$counts;
优点:
只能创建一个对象,可节省内存资源
最新文章
- Kinect2.0 for Mac开箱
- greendao对SQLite数据库的增删改查操作
- COM/ATL 资料收集
- iOS ----Pods-resources.sh Permission denied
- mongodb操作:利用javaScript封装db.collection.find()后可调用函数源码解读
- PHP命名空间的概念与使用
- Python网络数据采集3-数据存到CSV以及MySql
- Hibernate学习笔记(5)---Query接口
- 【BZOJ3506】【Cqoi2014】排序机械臂
- 新型USB病毒BadUSB 即使U盘被格式化也无法根除
- ***阿里云ECS实战配置虚拟主机 + Apache 配置虚拟主机三种方式
- python数据类型内置方法 字符串和列表
- Linux系统学习之进程管理
- cocos2d-x学习之路(二)——分析AppDelegate和HelloWorldScene文件
- 用Service实现断点下载
- SPOJ Prime or Not - 快速乘 - 快速幂
- hive读书笔记
- Oracle Cannot Update TOP N Issue, 请专家解答
- Codeforces 509E Pretty Song (思维)
- JAVA获取网络图片并保存到本地(随机图片接口)
热门文章
- Servlet实现文件上传,可多文件上传
- vue + 百度地图api
- 在Ubuntu 12 服务器上源码安装 OpenERP 8.0
- 【Django】ImportError: cannot import name &#39;execute_manager&#39;
- 关于为什么要在项目中使用FTP文件服务器
- 转:简单通用的一则makefile .
- ADBport被占用,adb server is out of date
- 每秒处理3百万请求的Web集群搭建-用 LVS 搭建一个负载均衡集群
- 【LeetCode】97. Interleaving String
- laravel使用的模板引擎 blade