您的位置:首页 > 其它

单例模式的懒汉式和饿汉式

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; }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: