说实话,这是我面试时被击中的第一枪,因为看的书少,实践的也少,所以当时根本不知道什么是单例模式。现在看的多了,就想把以前的一些失误记录下来。一是提醒自己不要再犯这类错误,二也是给其他人一些提醒吧。
言归正传,所谓单子模式就是在整个应用过程中只向外界提供唯一的一份实例,也就是说在应用时只有一个实例,这样也就不用反反复复的创建实例了。那么根据他的要求,看下面一个最简单的单例模式的代码:
- public class Singleton {
- private static Singleton single = new Singleton();
- private Singleton(){
- }
- public static Singleton getSingletonInstance(){
- return single;
- }
- }
通过这段代码,我们发现要想实现这个Singleton类的实例,就必须要通过构造函数,但是他的构造函数是private的,所以无法在别的类中实现他的实例化,但是可以通过getSingletonInstance方法,能返回一个实例single,因为他是public的静态函数,可以被别的类调用。这就是一个简单单例模式。当然也可以把构造single的语句放在getSingletonInstance方法中去实现。
总结一下单例模式的特点:
1. 构造方法是private修饰的。
2. 有一个private的静态应用实例。
3. 有一个静态的public的方法返回该类的实例。
其实这三个特点完全是由于单例模式的要求所决定的。