在java开发中善于使用静态工厂方法去代替构造器

用静态方法替代构造器的优点及缺点


优点:
1.静态方法是有名称的,而一个类只能去定义多个参数不同的构造器。例如创建一个BigInteger(int,int,Random)只知道返回的是BigInteger类型的但可能为素数,但是使用BigInteger.probableprime的静态工厂方法的来表示就更加清晰。
2.使用静态方法的时候不必每次使用都去创建一个新对象,这样可以节省很大的内存空间提高性能。并且可以利用静态工厂方法确保对象是单例的。而且可以对对象进行重复利用。
3.使用静态方法可以返回类型的任何子类型的对象。例如集合框架的伴生类Collections中提供了很多种的静态方法可以去创建操作集合。
4.使用静态工厂方法可以通过静态工厂传入参数的变化去随着每次的调用而发生变化。例如Enumset就只有静态方法没有构造器,他可以利用静态方法返回两个子类之一的实例。
5.静态工厂方法返回的对象所属的类可以在编写该静态方法的时候不存在,但是构造器在编写时候该类是一定存在的。
缺点:
1.类如果不含有受保护的或者公有的构造器就不能被子类化。
2.程序员很难发现静态工厂方法。因为在api文档中没有被明确的标识出来。
静态工厂方法惯用的名称:
from of valueOf instance getInstance create newInstance getType newType type
小结:
1.静态工厂方法不同于工厂模式要对两者加以区别,工厂方法不对应设计模式。
2.关于静态工厂方法的使用,在平时开发过程中可以多使用collections中的静态方法去创建集合
3.静态工厂方法经常会比构造器更加合适,切忌第一反应就使用公有的构造器方法而不先考虑静态工厂方法。
以上是通过Effective Java中关于对静态工厂方法和构造器的比较所作的读书笔记。

你可能感兴趣的:(学习)