实现单例的条件:三私一公

三私:私有化构造方法:不让外部创建对象

    私有化克隆方法:不让外部克隆对象

    私有静态属性:保存已经产生的对象

一公:公共静态方法:在类内部创建对象

实例:

<?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;

优点:

  只能创建一个对象,可节省内存资源

最新文章

  1. Kinect2.0 for Mac开箱
  2. greendao对SQLite数据库的增删改查操作
  3. COM/ATL 资料收集
  4. iOS ----Pods-resources.sh Permission denied
  5. mongodb操作:利用javaScript封装db.collection.find()后可调用函数源码解读
  6. PHP命名空间的概念与使用
  7. Python网络数据采集3-数据存到CSV以及MySql
  8. Hibernate学习笔记(5)---Query接口
  9. 【BZOJ3506】【Cqoi2014】排序机械臂
  10. 新型USB病毒BadUSB 即使U盘被格式化也无法根除
  11. ***阿里云ECS实战配置虚拟主机 + Apache 配置虚拟主机三种方式
  12. python数据类型内置方法 字符串和列表
  13. Linux系统学习之进程管理
  14. cocos2d-x学习之路(二)——分析AppDelegate和HelloWorldScene文件
  15. 用Service实现断点下载
  16. SPOJ Prime or Not - 快速乘 - 快速幂
  17. hive读书笔记
  18. Oracle Cannot Update TOP N Issue, 请专家解答
  19. Codeforces 509E Pretty Song (思维)
  20. JAVA获取网络图片并保存到本地(随机图片接口)

热门文章

  1. Servlet实现文件上传,可多文件上传
  2. vue + 百度地图api
  3. 在Ubuntu 12 服务器上源码安装 OpenERP 8.0
  4. 【Django】ImportError: cannot import name &#39;execute_manager&#39;
  5. 关于为什么要在项目中使用FTP文件服务器
  6. 转:简单通用的一则makefile .
  7. ADBport被占用,adb server is out of date
  8. 每秒处理3百万请求的Web集群搭建-用 LVS 搭建一个负载均衡集群
  9. 【LeetCode】97. Interleaving String
  10. laravel使用的模板引擎 blade