Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有效java中的静态工厂方法_Java_Static Methods_Effective Java - Fatal编程技术网

有效java中的静态工厂方法

有效java中的静态工厂方法,java,static-methods,effective-java,Java,Static Methods,Effective Java,在有效的Java第1项中,它说静态工厂方法使集合框架比原来小得多。有人能解释一下怎么做吗?我不明白为什么仅仅因为使用静态工厂方法就可能出现以下情况? 我的意思是,我们仍然必须实现这些单独的实现,不是吗 集合框架API比它本来要小得多 它输出了32个独立的公共类,每个类一个 方便实施 我认为这里的意思是,如果需要同步,java collections API中只有核心实现,等等,“包装器”是由静态工厂提供的 所以有8个实现,没有“包装器”,将有更多(尺寸增益) 有关更多详细信息,请参见。“更小”表

在有效的Java第1项中,它说静态工厂方法使集合框架比原来小得多。有人能解释一下怎么做吗?我不明白为什么仅仅因为使用静态工厂方法就可能出现以下情况? 我的意思是,我们仍然必须实现这些单独的实现,不是吗

集合框架API比它本来要小得多 它输出了32个独立的公共类,每个类一个 方便实施


我认为这里的意思是,如果需要同步,java collections API中只有核心实现,等等,“包装器”是由静态工厂提供的

所以有8个实现,没有“包装器”,将有更多(尺寸增益)

有关更多详细信息,请参见。

“更小”表示“更少的类”


没有为每个实现变体提供大量的类,而是提供了工厂方法,这些方法返回这样的实现,而不需要将它们的类声明为顶级类(更少的“类膨胀”)。

要小得多你的意思是-性能,对吗?不。我认为在有效的java中,他们指的是尺寸。如果我错了,请纠正我。你能解释一下顶级课程太多的缺点吗?我不确定我是否理解答案的这一部分。@viraj太多的类是“代码混乱”的一种形式,特别是当需要的具体类实际上是一些接口的味道时。工厂方法还提供了一个稳定的API,在该API后面使用的实际类可以随着代码库的发展而自由更改。如果我没有正确理解,请纠正我,隐藏实际实现(通过使类非公共化)当您希望随着代码库的发展而更改实现时,工厂方法中的隐藏接口会有所帮助。这意味着,假设您在版本1.1中有2个特定接口的实现,您可以简单地删除版本1.2中2的1个实现?