对于类来说,为了让客户端获取他自身的一个实例,[1]最传统的方式就是提供一个公有的构造器.类还有一种方法,应该成为程序员工具箱中的一把利器,[2]提供一个共有的静态工厂方法,只是一个返回类的实例的静态方法.
这里的静态工厂方法与设计模式中的工厂方法模式不同,两者并不直接对应
与公有的构造器相比,优劣势
优势
1.静态工厂方法有名称
2.静态工厂方法不必在每次调用他们的时候创建一个新对象
3.静态工厂方法可以返回原返回类型的任何子类型的对象
4.静态工厂方法所返回的对象的类随着每次调用而发生变化,这取决于静态工厂方法的参数值
5.静态工厂方法返回的对象所属的类,在编写包含该静态工厂方法的类可以不存在
劣势
1.类如果不含有公有的或者受保护的构造器,就不能被子类化
2.程序员很难发现他们