设计模式 - 单例模式.doc
《设计模式 - 单例模式.doc》由会员分享,可在线阅读,更多相关《设计模式 - 单例模式.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、设计模式读书笔记-单例模式 有时候某些对象我们只需要一个,如:线程池、缓存、对话框等等,对于这类对象我们只能有一个实例,如果我们制造出多个实例,就会导致很多问题产生。 但是我们怎样才能保证一个类只有一个实例并且能够便于访问?这里我们想到了全局变量,全局变量确实是可以保证该类可以随时访问,但是它很难解决只有一个实例问题。最好的办法就是让该自身来负责保存它的唯一实例。这个类必须要保证没有其他类来创建它。这里我们可以将其构造方法私有化。即1 Public MyClass2 PrivateMyClass()3 含有私有化构造器的类就能保证它不能被其他类实例化了。但是我们如何来获取这个实例化类呢?提供一
2、个方法用于返回该类的实例对象即可实现。 1 public class MyClass 2 private MyClass()3 4 5 6 public static MyClass getInstance()7 return new MyClass();8 9 一、基本定义 通过上面简单介绍,我们可以对单例模式有一个简单的认识。所谓单例模式就是确保某一个类只有一个实例,并且提供一个全局访问点。 从上面可以看出单例模式有如下几个特点: 一、它只有一个实例。 二、它必须要自行实例化。 三、它必须自行想整个系统提供访问点。 二、模式结构 单例模式可以说是最简单的设计模式了,它仅有一个角色Singl
3、eton。 Singleton:单例。 三、模式实现 1 public class Singleton 2 /利用静态变量来记录Singleton的唯一实例 3 private static Singleton uniqueInstance; 4 5 /* 6 * 构造器私有化,只有Singleton类内才可以调用构造器 7 */ 8 private Singleton() 9 10 11 12 public static Singleton getInstance()13 if(uniqueInstance = null)14 uniqueInstance = new Singleton()
4、;15 16 17 return uniqueInstance;18 19 20 在Head First有这样一个场景,就是说有两个线程都要执行这段代码,很有可能会产生两个实例对象。如下图: 这里有三种解决方案。 第一、 使用synchronized来处理。也就是说将getInstance()方法变成同步方法即可。1 public class Singleton 2 /利用静态变量来记录Singleton的唯一实例 3 private static Singleton uniqueInstance; 4 5 /* 6 * 构造器私有化,只有Singleton类内才可以调用构造器 7 */ 8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计模式 单例模式 设计 模式
限制150内