我觉得单例模式应该是设计模式中最简单的一个了,而且它也比较独立,不象其它设计模式总是和其它模式结合使用。
学习单例模式,首先应该掌握的是JAVA的static关键字,从名字上可以看出来,单例模式,意思就是每一个对象都应该只有一个实例,那么怎么才能保证一个对象只有一个实例呢,这就用到了static了,这个关键字的是静态的意思,就是说在一个对象创建好后,给它分配一个静止的内存空间,那么以后只要是这个对象的实例都用这个空间,不会变。这样也就保证了每一个对象的实例是一样的,也就是说一个对象只有一个实例。
单例模式有两种表示方式:
方式一:
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
方式二:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
if (instance==null)
instance=new Singleton();
return instance; }
}
我们在使用时,Singleton.getInstance() 就可以得到这个对象的实例了。