• 单例模式是常用的设计模式之一,作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,特点:
  1. 某个类只能有一个实例,避免重复实例化。
  2. 必须自行创建这个实例,不允许外部实例化,不允许克隆。
  • 举个例子:
<?php
/**
* 设计模式之单例模式
* $_instance必须声明为静态的私有变量
* 构造函数和析构函数必须声明为私有,防止外部程序实例化类。从而失去单例模式的意义
* getInstance()方法必须设置为公有的,必须调用此方法,以返回实例的一个引用
* ::操作符只能访问静态变量和静态函数
* new对象都会消耗内存,使用场景:最常用的地方是数据库连接。使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。
*/
class Singleton
{private static $_instance;//阻止用户实例化 实例化抛出Fatal errorprivate function __construct(){}//阻止用户复制对象实例 抛出Fatal errorpublic function __clone(){throw new Exception("not allow clone this class.");}//单例方法public static function getInstance(){if(!(self::$_instance instanceof self)){self::$_instance = new self();}return self::$_instance;}public function doSomething(){echo("to do something");}
}//$singleton = new Singleton(); //Fatal error$singleton = Singleton::getInstance();$singleton->doSomething();//$t = clone $singleton;//Fatal error

转载于:https://www.cnblogs.com/stringfade/p/7242409.html

设计模式学习笔记(1)——单例模式相关推荐

  1. Java设计模式学习笔记:单例模式(一)

    今天学到单例模式,对几种单例模式的特点做了一次梳理,从线程安全性和性能两个方面来说. 首先都知道有两种最常见的单例模式:饿汉式和懒汉式,如下: 饿汉式: public class Hangry() { ...

  2. 设计模式学习笔记汇总目录

    这里的学习笔记包含JavaSE和J2EE两部分,持续更新中! 其中关于学习的参考资料如下: 1.菜鸟设计模式 2.Head First Design Patterns(书.强烈推荐); 3.大话设计模 ...

  3. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  4. java/android 设计模式学习笔记(1)---单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  5. 7 种 Javascript 常用设计模式学习笔记

    7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...

  6. 步步为营 .NET 设计模式学习笔记系列总结

    设计模式我从开篇到23种设计模式的讲解总共花了进两个月的时间,其间有很多读者给我提出了很好的建议,同时也指出了我的不足,对此我表示感谢,正是由于很多读者的支持我才能坚持的写到最后.在此表示我真诚的谢意 ...

  7. 设计模式学习笔记——策略(Strategy)模式

    设计模式学习笔记--策略(Strategy)模式 @(设计模式)[设计模式, 策略模式, Stategy] 设计模式学习笔记策略Strategy模式 基本介绍 策略案例 类图 实现代码 Hand类 S ...

  8. 设计模式学习笔记——单例(Singleton)模式

    设计模式学习笔记--单例(Singleton)模式 @(设计模式)[设计模式, 单例模式, Singleton, 懒汉式, 饿汉式] 设计模式学习笔记单例Singleton模式 基本介绍 单例案例 类 ...

  9. 设计模式学习笔记(C++实现)(七)--适配器模式

    1.适配器模式简介 英文名称 Adapter 主要目的 该模式可以将一个类的的接口,转换成客户想要的另一个接口. 使用场景 1.当要使用的两个类功能相同或者相似,但仅仅是接口不同时. 2.适配器模式代 ...

最新文章

  1. NSBundle使用:获取文件路径
  2. LA3942字典树+递推
  3. c++采集声卡输出_舒尔 Shure RMCE-LTG Lightning-MMCX接口耳机线[线型声卡]测评报告 [Soomal]...
  4. servlet获取jsp页面的值为null_Jsp挖掘(4)-打造自己的jsp防御代码
  5. 解决GeoTools中CQL解析中文字段名的问题
  6. mysql5.5的方言_mysql方言问题
  7. linux-basic(13)学习shell script
  8. 内部类(innerclasses)
  9. 数据结构--树状数组
  10. 综合项目:Keepalived+Redis+Haproxy实现主从热备、负载均衡、秒级切换
  11. 汽车上的一些名词缩写解释
  12. window.opener的用法
  13. centos6.8安装mysql5.6【转】
  14. 在Axapta中实现split函数
  15. Hbase KeyValue结构详解
  16. day-1 用python编写一个简易的FTP服务器
  17. 三菱PlC程序大型项目QCPU+QD77MS16 包含一套完整的电气开发系统资料(包含plc程序,触摸屏程序,伺服模块设置程序,程序开发地址规划表)
  18. 基于深度学习的超大面积室内导航机器人Java后台软件设计
  19. 考研笔记-chyer
  20. Snipaste - 截图贴图软件

热门文章

  1. What is WCF
  2. CenOs6.3下博通BCM4313无线网卡驱动
  3. 前端 如何检测到当前的网页已经退出_javascript在当前窗口关闭前检测窗口是否关闭...
  4. 网页HTML5制作flex布局骰子,CSS3的Flexbox骰子布局的实现及分析
  5. python word2vec 移植_真实资讯语料下的Word2Vec的迁移实践:Tag2Vec
  6. 卸载cuda_小白入门机器学习之环境配置——CUDA(Ubuntu16.04)
  7. python两个字典合并、相同key值保留_Python两个字典key相同的值组成新字典?
  8. 有关计算机科学导论的说法,计算机科学导论__练习题_汇总.docx
  9. 分治法的关键特征_经典算法思想2——分治(Divide-and-Conquer)
  10. java socket 工具_java Socket简易聊天工具