单例模式的懒汉式和饿汉式
2016-03-17 10:38
211 查看
简介
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间不同。
目的
对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此有时确保系统中某个对象的唯一性即一个类只能有一个实例非常重要。实例
一、懒汉式
“懒汉式”是在你真正用到的时候才去建这个单例对象: 比如:public class Singleton{
private static Singleton singleton = null;
public static synchronized getInstance(){
if(singleton==null)
{
singleton = new Singleton();
}
return singleton;
}
}
二、饿汉式
“饿汉式”是在不管你用的用不上,一开始就建立这个单例对象: 比如:public class Singleton{
private static Singleton singleton = new Singleton ();
private Singleton (){}
public Singleton getInstance(){ return singletion; }
}
相关文章推荐
- xib 布局 代码改变frame
- .NET的三种缓存(页面缓存,控件缓存,自定义缓存)
- 策略模式实践
- zendstudio 破解
- 查看linux下某端口被哪个进程占用(linux命令)
- hdu 杭电 2216 Game III
- hdu 杭电 1312 Red and Black
- hdu 杭电 1241 Oil Deposits
- hdu 杭电 1002 A + B Problem II
- c++连接hive的一个简单的例子
- hdu 杭电 1495 非常可乐
- html5之viewport
- matlab中的类标转换程序
- 数组结构体中排序
- hdu 杭电 1728 逃离迷宫
- 并查集模板
- 《C++ Primer》第四版 第12章 类
- hdu 杭电 1253 胜利大逃亡
- hdu 杭电 2473 Junk-Mail Filter
- linked list cycle