在Java中,对类而言,实例化一个对象的传统方式是提供公用的构造方法,还有一种方法就是,通过静态工厂的方式来获取一个对象的的实例。
好处:
1、静态工厂方法与构造器不同的第一大优势就是,它们有自己的名称。如果构造器没有确切的描述对象,可以适当的采用静态工厂来代替,那么在使用的时候,就会更加容易,代码也更加容易阅读。
2、静态工厂方法与构造器不同的第二大优势是,在某些情况下,不必每次使用一个对象时,就创建它,可以通过静态工厂方法,返回单一的,不可变的对象。从而避免的不必要的重复对象。
3、静态工厂方法与构造器不同的第三大优势是,可以返回原返回对象类型的子类型对象,在选择对象返回类型时提高代码灵活性。
4、静态工厂方法与构造器不同的第四大优势是,返回的类型可以根据参数的不同,每次发生变化,只要是返回以声明返回对象类型的子类型对象即可。
坏处:
1、静态工厂方法的第一个缺点在于,类如果没有共有的构造器,或者构造器受保护,就不能被子类化(不能被其他类实现)。
2、静态工厂方法的第二个缺点在于,很难找到目标工厂方法,因为没有像构造器一样在API中明确的标识出来。
静态方法的惯用名称:
Date date = Date.from(instant);
BigInteger prime = BigInteger.valueOf(5L);
Object t = Class.newInstance();
网友评论