单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类即被称为单例类。
单例类的特点:
1.单例类只能有一个实例
2.单例类必须自己创建自己的惟一的实例
3.单例类必须给所有其他对象提供这一实例
懒汉式单例模式:
package singleton;
/**
* 懒汉式单例模式
*/
public class LazySingleton {
private static LazySingleton singleton = null;
/**
* 私有构造器,保证外界无法实例化此类
*/
private LazySingleton() {}
/**
* 静态工厂方法,返回惟一的实例
* @return
*/
public synchronized static LazySingleton getInstance()
{
if(singleton != null)
{
singleton = new LazySingleton();
}
return singleton;
}
}
饿汉式单例模式:
package singleton;
public class EagerSingleton {
private static EagerSingleton singleton = new EagerSingleton();
/**
* 私有构造器,保证外界无法实例化此类
*/
private EagerSingleton() {}
/**
* 静态工厂方法,返回惟一的实例
* @return
*/
public static EagerSingleton getInstance()
{
return singleton;
}
}
饿汉式单例类在自己被加载时就将自己实例化了,即便加载器是静态的,在饿汉式单例类被加载时仍会将自己实例化。单从资源利用效率角度来讲,这个比懒汉式单例类稍差些,但是从速度和反应时间角度来讲,则比懒汉式单例类稍好些。然而,懒汉式单例类在实例化时,必须处理好在多个线程同时首次引用此类时的访问限制问题,特别是当单例类作为资源控制器在实例化时必然涉及资源初始化,而资源初始化很有可能耗费时间,这意味着出现多线程同时首次引用此类的几率变得较大。
分享到:
相关推荐
简单的单例模式举例Singleton 分为恶汉式 懒汉式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...
单例模式的特点有三: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,...
单例模式(Singleton)
该文当中对Java单类模式有非常细致入微的,循序渐进的讲解。
单例模式 Singleton 单例模式线程安全问题和拓展
设计模式C++学习之单例模式(Singleton)
主要介绍了单例模式 Singleton 简单实例设计模式解析的相关资料,需要的朋友可以参考下
java Singleton单例模式 java Singleton单例模式
一个产生随机数的例子,整个应用程序中只需要一个类的实例来产生随机数,客户端程序从类中获取这个实例,调用这个实例的方法nextInt(),公用的方法访问需要进行同步,这是单例模式需要解决的同步问题。
此示例展示了Qml 的单例模式(类似全局对象,只生成一次实例,可全局使用) surfsky.cnblogs.com
单例模式 Singleton Pattern 问题解决: (1)单例模式简介: Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有...
Java面向对象(高级)-- 单例(Singleton)设计模式
单例模式(Singleton)的6种实现,单例模式(Singleton)的6种实现
设计模式总结-模板设计模式,单例模式(singleTon)
在Java应用中,单例对象能保证在一个...3、有些像交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了,只有使用单例模式,才能保证核心交易服务器独立控制整个流程。 CSDN代码的详细解释。
4、单例模式(Singleton Pattern) 用意:仅允许生成一个对象时
深入浅出Singleton,详细掌握单例模式
单例设计模式Singleton1