第一种:
public class Test
{
public static final Test instance=new Test();
private Test();
}
第二种:
public class Test
{
private static final Test instance=new Test();
private Test(){}
public static Test getInstance()
{
return instance;
}
}
第二种方法的主要好处在于,它提供了灵活性;在不改变API的前提下,允许我们改变想法,把该类做成singleton,或者不做成singleton,singleton的静态工厂方法返回该类的唯一实例,但是,它也很容易被修改,比如说,为每个调用该方法的线程返回一个唯一的实例。
总而言之,如果你确信该类将永远是一个singleton,那么使用第一种方法是有意义的。如果你希望保留一点余地,那么请使用第二种方法。