这回我们说的是单体模式。
单体模式有什么好讲的?不就是只有一个实例化对象吗?难道还有什么吗?
的确,单体模式就是创建一个独一无二的对象。但是,其实对象只有一个,在实现过程中还是会遇到许许多多的问题的。接下来让我们看看这个模式吧。
我们这回开门见山,直接来看下一个单间模式的实现吧:
public class Singleton {
private static Singleton uniqueInstance; //利用一个静态变量来记录Singleton类的唯一实例
private Singleton() {} //把构造器声明为私有的,只有自Singleton类内才可以调用构造器
public static Singleton getInstance () { //用grtInstance方法实例化对象,并返回这个实例
if (uniqueInstance == null)
uniqueInstance = new Singleton();
return uniqueInstance;
}
}
让我们进一步了解getInstance方法里面的一切吧。
是不是感觉很容易理解。
单件模式:确保一个类只有一个实例,并提供一个全局访问点。
让我们来看看单件模式的类图吧:
类图是不是很简单,但是不要以为在实际运用的时候就很容易,单件模式在运用的时候还是会出现一些问题的,比如在多线程的时候,就回出现创建对象多个的问题。
多线程引起的单件模式错误解决办法有多种,这里我们就简单说一种-----------------双重检查加锁
好了,单件模式简单介绍玩了,接下来就是总结了:
1:单件模式确保程序中一个类最多只有一个实例。
2:单件模式也提供访问这个实例的全局点。
3:在JAVA中实现单件模式需要私有的构造器、一个静态方法和一个静态变量。
4:确定在性能和资源上的限制,然后小心地选择适合的方案来实现单件,以解决多线程的问题。