--------- android培训、java培训、期待与您交流! ----------
单例设计模式
单例设计模式的定义:Ensure a class has only one instance,and provide a global point of access to it.
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例设计模式的通用代码:
饿汉式:
public class Singleton
{
private static final Singleton singleton = new Singleton();
private Singleton(){}//限制产生多个对象
//通过公有方法获得实例对象
public static Singleton getSingleton()
{
return singleton;
}
//类中的其他方法
public static void doSomething(){}
}
懒汉式(非线程安全):
public class Singleton
{
private static Singleton singleton = null;
private Singleton(){}
//由于不是原子操作,存在线程不安全性
public static Singleton getSingleton()
{
if(singleton == null)
{
singleton = new Singleton();
}
return singleton;
}
//类中的其他方法
public static void doSomething(){}
}
在一个系统中,要求一个类有且仅有一个对象,如果出现多个对象就会出现“不良反应”,可以采用单例模式。具体使用场景:
1> 要求生成唯一序列号的环境;
2> 在整个项目中需要一个共享访问点或共享数据,例如一个Web页面上的计数器,可以不用把每次刷新都记录到数据库中,使用单例模式保持计数器的值,并确保是线程安全的;
3> 创建一个对象需要消耗的资源过多,如要访问IO和数据库等资源;
3> 需要定义大量的静态常量和静态方法(如工具类)的环境,可以采用单例模式(当然,也可以直接声明为static的方式)。
懒汉式(线程安全)的一种写法:
public class Singleton
{
private static Singleton singleton = null;
private Singleton(){}
public static Singleton getSingleton()
{
if(singleton == null)
{
synchronized(Singleton.class)
{
if(singleton == null)
{
singleton = new Singleton();
}
}
}
return singleton;
}
public static void doSomething(){}
}