初探单例模式学习笔记

一、如何防止一个类产生多个实例呢?

1.不做任何措施,贴出一幅海报,通知所有程序员不能对这个类创建多个实例  (不现实)

2.让这个类无法创建另一个实例    -> 单例模式

二、但是对类进行实例化,它的决定权在类的外部,如何将决定权回归类的自身呢?

-> 将构造函数变成private类型  ,不允许外界直接调用构造方法创建实例

三、但我们总要给外界提供一个途径获得类的实例

class T

{

        private T();

        public static T getInstance()

    {

       return new T();

    }

}

四、事实上现在允许创建第二个实例,如何防止呢

class T
{
	private static T t;

	private T()
	{
	}

	public static T getInstance()
	{
		if(t==null) t = new T();
		return t;
	}
}

五、可以通过创建好对象,返回对象,来控制只有一个实例。如果创建过程复杂,可以写在静态块中。

/*
  单例模式
*/

class T
{
	private static T t;

	static{
	  t = new T();
	}

	private T()
	{
	}

	public static T getInstance()
	{
		//if(t==null) t = new T();
		return t;
	}
}

public class A
{
	public static void main(String[] args)
	{
		T a = T.getInstance();
		T b = T.getInstance();

		System.out.println(a==b);
	}
}

六、静态块什么时候会执行它呢?

-> 当类第一次加载的时候

单例模式的变种:少例      ->对象池技术

初探单例模式学习笔记

时间: 2024-12-20 15:16:43

初探单例模式学习笔记的相关文章

初探排序学习笔记

简单选择排序 思路:选出最小的元素,放在第一个位置,之后在剩下的元素中,选出最小的元素,放在第二个位置.........以此类推,直到完成排序. package h; public class MyA { static void selectOne(int[] a, int begin) { int p = begin; //假设修正法 for(int i=begin+1; i<a.length; i++){ if(a[i] < a[p]) p = i; //记录最小元素所在位置 } {int

关于前端的photoshop初探的学习笔记

写在前边 这还是高三的时候暑假的时候学习这个软件时记的笔记呢,今天又在电脑上找到了它,总觉得不应该让他尘封在我的硬盘上,于是挂了出来.温馨提示:比较乱,写给自己看的,看不下去,按ctrl+W 笔记内容 ps简介可以用于合成.可以三维adobe bridge图像浏览器 可以直接将图片拖动到ps的编辑系统中..但是是出于临时文件状态,还需要对他进行保存..网站上某些图片不能够拉动,但是可以利用截图功能来实现..两张图片同时拉倒一个文件中构成两个不同的图层..打开文件的几种方法.. ps数码相片点阵图

初探csrf学习笔记

以下是今天学习了一天对CSRF的理解,大家切勿作为标准,如有出错请告之! 严禁转载.不想拿自己刚学到的知识去[误人子弟]之所以写出来是让自己巩固和增加理解,他日对此文有不当之处自会修改. [+]csrf是什么? [-]CSRF全称叫做cross-site request forgety 中文名叫做跨站请求伪造.[+]怎么理解CSRF? [-]CSRF其实与XSS十分相似 xss: 攻击者发现XSS漏洞——构造代码——发送给受害人——受害人打开——攻击者获取受害人的cookie——完成攻击CSRF

[Nodejs]初探nodejs学习笔记- 如何使用nodejs搭建简单的UDP聊天功能

何为UDP(User Datagram Protocol)? 从baidu摘过来一段:UDP,用户数据报协议,与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层.根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议.UDP协议的主要作用是将网络数据流量压缩成数据包的形式.一个典型的数据包就是一个二进制数据的传输单位.每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据. UDP报文没有可靠性保证.顺序保证和流量控制字段等,可

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

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对

初探swift语言的学习笔记十一(performSelector)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35842441 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 在OC中使用好好的performSelector,但不知为什么在swift有意的被拿掉了.更有甚者连IMP, objc_msgSend也不能用了.虽然想不通为什么,但应该有他的道理.就不纠结了. 大家可能在OC中使用得更多的就是延时处理,及后台处

第十七篇:实例分析(3)--初探WDDM驱动学习笔记(十)

续: 还是记录一下, BltFuncs.cpp中的函数作用: CONVERT_32BPP_TO_16BPP 是将32bit的pixel转换成16bit的形式. 输入是DWORD 32位中, BYTE 0,1,2分别是RGB分量, 而BYTE3则是不用的 为了不减少color的范围, 所以,都是取RGB8,8,8的高RGB5, 6, 5位, 然后将这16位构成一个pixel. CONVERT_16BPP_TO_32BPP是将16bit的pixel转换成32bit的形式 输入是WORD 16BIT中

第十七篇:实例分析(4)--初探WDDM驱动学习笔记(十一)

感觉有必要把 KMDDOD_INITIALIZATION_DATA 中的这些函数指针的意思解释一下, 以便进一步的深入代码. DxgkDdiAddDevice 前面已经说过, 这个函数的主要内容是,将BASIC_DISPLAY_DRIVER实例指针存在context中, 以便后期使用, 支持多实例. DxgkDdiStartDevice 取得设备信息, 往注册表中加入内容, 从POST设备中获取FRAME BUFFER以及相关信息(DxgkCbAcquirePostDisplayOwnershi

第十七篇:博采众长--初探WDDM驱动学习笔记(七)

基于WDDM驱动的DirectX视频加速重定向框架设计与实现 现在的研究生的论文, 真正质量高的, 少之又少, 开题开得特别大, 动不动就要搞个大课题, 从绪论开始到真正自己所做的内容之间, 是东拼西凑地抄概念, 抄公式, 达到字数篇幅的要求, 而自己正真做了什么, 有哪些实际感受, 做出的内容, 相比前面的东拼西凑就几点内容, 之后就草草结束, 步入感谢的段落. 原因不光只有学生自己, 所谓的读研, 如果没有一个环境, 学生有再大的愿望, 再强的毅力, 到头来也只是空无奈. 有些导师要写书,