Effective Java随笔(一) 善于使用静态工厂方法代替构造函数获取实例

1.善于运用静态工厂方法代替构造器获取实例对。
1)静态工厂方法有函数名。相比较构造函数,静态工厂方法有方法名,有时比类名能更加准确地定义实例。在构造器重载的类中,往往实例化时无法清楚或者记住使用哪个构造器。而且无法区分同一参数实例之间的不同。而静态工厂方法可以通过不同方法标签解决上述问题。即使是相同参数,也可通过方法名定义不同的实例。
2)静态工厂方法可以不用返回新的实例。
如:

 private static Demo demo=new Demo();
 public static Demo  getDemo(){
     return demo;
 }

3)静态工厂方法可以返回任意子类实例。
4)创建参数化类型实例的时候,使得代码更加简洁。
如:

public static   HashMap newInstance(){
        return new HashMap();
        }

缺点
1)如果类的构造函数private或者frendly,那么静态工厂方法将不能获取子类实例。因该类已无法被继承。
2)静态工厂方法和其他静态方法并没什么不同,也只是一个静态方法而已。

你可能感兴趣的:(Java)