gpt4 book ai didi

java - 让静态方法返回私有(private)类的设计决策背后的原因是什么?比如 Collections.synchronizedList()

转载 作者:搜寻专家 更新时间:2023-11-01 02:59:51 24 4
gpt4 key购买 nike

我想扩展 SynchronizedList 类,但发现它是私有(private)的。

为什么要这样设计?

最佳答案

因为设计它的人不想让你扩展它。

这样做的确切原因只有设计人员知道,但请考虑 Effective Java 2nd Ed Item 17 中的建议:

Design and document for inheritance or else prohibit it.

如果您不必担心有人扩展它,它会简化类的实现。 Effective Java 项目详细介绍了您必须针对的各种问题,以及缓解这些问题的必要步骤。

有人可能会争辩说,类设计者没有把精力放在“为继承设计和记录”上是懒惰的。在 Collections.Synchronized* 类的特定情况下,我不相信这一点:类设计总是一种妥协;我认为设计人员权衡了付出额外努力的好处与扩展同步集合的非常有限的用例。 (我从未想过要扩展类(class);诚然,这是一个样本量 1)。

毕竟,这是一个包装类:您可以选择将附加功能添加到由 Synchronized* 类包装的类中,或者将 Synchronized* 类包装在装饰师。或者,您可以简单地自己重新实现 Synchronized* 类 - 这是一堆样板文件,但并不难。

无论您选择哪种方式,您都可以解决它。

关于java - 让静态方法返回私有(private)类的设计决策背后的原因是什么?比如 Collections.synchronizedList(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38590376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com