静态工厂方法是一个返回类实例的静态方法。静态工厂方法的用于替代构造方法。
1、静态工厂方法的优点
如果一个构造方法的参数没有具体描述要返回的对象,那么使用一定意义名字的静态工厂方法使得该类更利于使用。
如果一个类有多个特征相同的构造方法,那么应该考虑用有特殊意义名字的静态工厂方法来代替构造方法。
静态工厂方法在调用的时候不要求一定要有类对象。对于一个非可变类,可以使用一个预先构造好的实例,或者实例已经缓存起来,避免创建重复对象。
静态工厂方法可以为重复的调用返回同一个对象。第一他可以使一个类确保是单例的;第二他使得非可变类不存在两个相等的实例(==和eques都为真)。用==代替eques可以提高性能。
静态工厂方法可以返回一个类的子类对象。实现返回一个非公有类,隐藏具体实现,API更简洁。
接口作为静态工厂方法的自然返回类型。
2、静态工厂方法的不足
类如果不含有公有或保护类构造方法,就不能被子类化。
常用valueOf getInstance
3、总结
构造方法符合规范,优先使用。