您的位置:首页 > 其它

单例模式

2016-01-20 00:27 183 查看
单例模式(Singleton)是软件开发中较常用的一种设计模式思想,在有些情况下,某一个事物我们只需要生成一个实例对象即可。比如,一台计算机可以同时连接多台打印机,但在某一时刻只能处理其中某一台的打印业务,因此计算机的打印程序只能有一个,所以就要通过单例模式来实现该功能以避免两个打印作业同时输出到打印机中。

简单来说,单例模式就是在整个应用程序的生命周期中,单例类的实例对象最多只存在一个。

简单单例模式特点:

1.类自身负责保存并封装它的唯一实例;

2.这个类可以保证没有其他实例可以被创建;

3.这个类提供一个访问该实例的全局方法getInstance( )。

懒汉式单例:

单例类的唯一实例对象在你第一次调用getInstance( )时被实例化,如果你不调用getInstance( ),这个唯一对象是不存在的,为null。形象点说,懒汉式单例就是你不用它,它不会自己实例化,

[cpp] view
plain copy

public class Singleton

{

private static Singleton instance = null;

private Singleton(){};

public static Singleton getInstance()

{

if(instance == null)

{

instance = new Singleton();

}

return instance;

}

}




这个实现保证了只有在调用该类的时候对象才被初始化(延迟创建),但是缺点是线程不安全,当多个线程同时访问的时候,极可能实例化出多个对象。

饿汉式单例

饿汉式与懒汉式相反,饿了会自己主动找东西吃,所以不用人催自己创建了唯一的单例对象,

[cpp] view
plain copy

public class Singleton

{

private static Singleton instance = new Singleton();//定义实例变量

private Singleton(){}; //私有化构造方法

public static Singleton getInstance()

{

return instance;

}

}



此实现是线程安全的,多个线程进行访问时不会实例化多个对象,因为static属性只会被初始化一次,缺点是无论是否用到该实例都会被初始化,无故的开销变大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: