在Effective Java中的静态工厂方法

6
在《Effective Java》中,第1条建议使用静态工厂方法可以使集合框架比原本的实现更加简洁。那么这是如何实现的呢?使用静态工厂方法难道就能减少实现的数量吗?
事实上,如果我们采用传统的方式,需要为每个方便实现都创建一个公共类,这将导致Collections Framework API变得非常庞大。而使用静态工厂方法,则可以通过提供不同的参数来生成不同的实现,从而避免了这种情况。因此,即使使用静态工厂方法,我们仍然需要实现这些不同的实现,但是它们都可以通过相同的接口进行访问,这使得整个API更加简洁易懂。

你的意思是“更小”的性能,对吗? - Maxim Shoustin
1
不,我认为在《Effective Java》中,他们是指大小。如果我错了,请纠正我。 - Prasad Weera
2个回答

3

“更小”是指“类更少”。

为了避免为每种实现提供大量的类,而是提供了工厂方法,可以返回这些实现,而无需将它们的类声明为顶级类(减少了“类膨胀”)。


你能解释一下拥有太多顶层类的缺点吗?我不确定我理解答案的那部分。 - Viraj
@viraj 太多的类是一种“代码混乱”,特别是当需要的具体类实际上是几个接口的变体时。 工厂方法还提供了一个稳定的 API,其后面使用的实际类可以自由更改,随着代码库的发展。 - Bohemian
如果我理解不正确,请纠正我。通过在工厂方法中隐藏实际实现(使类非公共)背后的接口,在代码库发展的情况下有助于更改实现。这意味着,比如说,在版本1.1中,你有2个特定接口的实现,你可以在版本1.2中简单地删除其中的1个实现? - Viraj

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接