先说一下设计模式,设计模式是对问题行之有效的解决方案。是一种思想,适用于所有几乎所有的计算机语言。来自建筑学。
单例模式是要求内存中只能创建唯一的类的对象,接下来,我将从单例模式的动机,要求,实现三个方面进行说明。
动机
动机,这个词是看到网上的,比较简洁,拿来一用,我没有这么高的归纳能力,说白了,动机就是单例模式索要解决的问题。这个问题就是:要保证内存中只有唯一的一个实例,例如,多个类公用一个配置类,或者是信息类,现实生活中的例子有:一组人公用一台打印机,打印机在一个时间内,只能接受一个打印任务,这时,内存中只能有一个打印任务的对象。
要求
①不允许其他类使用关键字new来创建一个类的实例,因为如果使用new来创建的话,那么对于对象的创建就不可控制。那么就需要私有化构造方法。
②在该类中创建一个实例,注意:该实例要是私有静态的。
③对外提供一个静态方法,返回该类的对象给外界。注意:必须是静态方法,因构造函数私有化,必须通过类的静态方法来与外界通信。
实现步骤
①构造函数是优化
②通过new在本类中创建一个私有的对象
③提供一个方法,对外返回该对象。
按照对象创建的时机,单例又分为饿汉式和懒汉式
饿汉式:
//饿汉式
class Single
{
//只要类一加载,对象就已经存在
private static Single s =new Single();
private Single()
{
}
public static Single getInstance()
{
return s;
}
}
懒汉式:
//懒汉式
class Single2
{
//单例模式的延迟加载形式
private static Single2 s=null;
private Single2()
{
}
public static Single2 newInstance()
{
if(s==null)
{
s=new Single2();
}
return s;
}
}
over~~~