Head First 设计模式之单件模式(Singleton Pattern)
Posted 墨遥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Head First 设计模式之单件模式(Singleton Pattern)相关的知识,希望对你有一定的参考价值。
1. 单件模式的经典实现
publicclass Singleton
private static SingletonuniqueInstance;
private Singleton()
public static Singleton GetInstance()
if (uniqueInstance == null)
uniqueInstance = newSingleton();
return uniqueInstance;
2. 定义单件模式
单件模式确保一个类只有一个实例,并且提供一个全局的访问点。
把某个类设计成自己管理的一个单独实例,避免其他类再自行产生实例,只能通过单件类获取单件实例
对该实例提供全局的访问点,当需要实例时,向类查询,会返回单个实例。
类图:
3. 处理多线程
l 使用线程锁
publicclass Singleton
private static Singleton uniqueInstance;
private static object obj = new object();
private Singleton()
public static Singleton GetInstance()
if (uniqueInstance == null)
lock (obj)
if (uniqueInstance == null)
uniqueInstance = new Singleton();
return uniqueInstance;
l 使用“急切”创建实例,而不用延迟实例化的做法
public class Singleton
private staticSingleton uniqueInstance new Singleton();//在静态的初始化器中创建单件
private Singleton()
public static Singleton GetInstance()
return uniqueInstance;
4. 总结
l 单件模式确保程序中一个类最多只有一个实例。
l 单件模式也提供访问这个实例的全局点。
l 确定在性能和资源上的限制,小心选择适合的方案来实现单件,以解决多线程问题。
以上是关于Head First 设计模式之单件模式(Singleton Pattern)的主要内容,如果未能解决你的问题,请参考以下文章