单例模式,就是只让实例化一个对象,很多地方讲的都是饿汉和懒汉模式,在类的内部实例化自己,再定义static方法将引用返回出去,外部通过类名.方法的方式获得引用。直接定义一个public、static、final的属性,该属性就是实例化后的引用,然后外部通过类名.属性的方法获得,这样可以吗?如果可以,和其他方式什么区别,如果不行,为什么?下面代码执行结果为true package com.single; public class SingleTon { public static void main(String[] argv) { Single sin1 = Single.sin; Single sin2 = Single.sin; System.out.println(sin1 == sin2); } } class Single { public static final Single sin = new Single(); //私有的构造方法,只能在类内部使用,在外部是无法使用的,所以在外部new的话就编译不过了,保证了无法实例化多次 private Single() { } } |
|
10分 |
这是一个饿汉的变种!你也可以放在静态代码块里NEW!其实是跟普通饿汉式是一样的!没有任何区别!
|
10分 |
只让实例化一个对象
这个是最终的目的,已经达到,所有没有任何问题,只是不同的实现手段。 大多数Java过分的强调getter, setter不一定是好事,具体情况更需要根据实际情况合理使用。 |