effective java笔记--第二章

1. 考虑用静态工厂方法代替构造器

 对于类而言,为了让客户端获取它自身的一个实例,最常用的方法就是提供一个公有的构造器。

 另外,类可以提供一个公有的静态工厂方法(static factory method),它只是一个返回类的实例的静态方法。

 什么是静态工厂方法?(可参考:https://www.cnblogs.com/dyj-blog/p/8867028.html)

静态工厂方法相对于构造器的优势在于:

1)静态工厂方法有名称

    一个类只能有一个带有指定签名的构造器。编程人员通常知道如何避开这一限制:通过提供两个构造器,它们的参数列表只在参数类型的顺序上有所不同。但是这样会常调用错误的构造器。

    但是由于静态工厂方法有名称,所以不受上述的限制。当一个类需要多个带有相同签名的构造器时,就用静态工厂方法代替构造器,并且慎重的选择名称以便突出它们之间的区别。

2)不必在每次调用它们的时候都创建一个新对象

    使得不可变类可以使用预先构建好的实例,或者将构建好的实例缓存起来,进行重复利用,从而避免创建不必要的重复对      象。静态工厂方法能够为重复的调用返回相同对象,这样有助于类总能严格控制在某个时刻哪些实例应该存在。这种类被称      作实例受控的类(instance-controlled)。

    编写实例受控的类有几个原因:使得类可以确保它是一个Singleton或者是不可实例化的;使得不可变的类可以确保不会存在      两个相等的实例,即当且仅当a==b的时候才有a.equals(b)为true。如果类保证了这一点,它的客户端就可以使用==操作符来代替equals(Object)方法,这样可以提高性能。

猜你喜欢

转载自blog.csdn.net/huanhuan8944172/article/details/87860879
今日推荐