单例模式:指的是某一个类的对象在同一时间只允许存在一个实例(对象)。
假设存在类Singleton:
public class Singleton { }
这个类是普通类,可以随意创建:
Singleton singleone=new Singleton();
Singleton singletwo=new Singleton();
Singleton singlethree=new Singleton();
因为当创建一个类,并且没有显示的指定构造方法时,等效于:
public class Singleton { public Singleton() { } }要实现单例模式,首先,就不允许随意创建对象,等效于:
public class Singleton { private Singleton() { } }
一旦将构造方法私有化,则在类的外部时不允许调用构造方法的!
此时,只有类的内部才可以调用构造方法创建对象,等效于:
public class Singleton { private Singleton singleton=new Singleton(); private Singleton() { } }
创建singleton对象就是唯一被创建出来的对象!那么,当类的外部需要时,提供get方法即可!
但是为了保证在没有Singleton类的对象之前就可以调用getInstance()方法,必须使用static进行修饰,
由于被static修饰的成员只能访问其它static成员,所以方法只能调用优先加载到内存的静态数据,所以还需要static修饰Singleton,等效于:
public class Singleton { private static Singleton s=new Singleton(); public static Singleton getInstance(){return s;} private Singleton() { } }