gpt4 book ai didi

java - 可变类还是不可变类?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:09:14 24 4
gpt4 key购买 nike

我在一些设计书籍中读到,不可变类可以提高可伸缩性,并且尽可能编写不可变类是一种很好的做法。但我认为不可变类增加了对象的增殖。那么,为了提高可伸缩性,使用不可变类好还是使用静态类(所有方法都是静态的类)更好?

最佳答案

immutable的主要好处|然而,classes 的优点是您可以公开不可变的内部数据成员,因为调用者无法修改它们。这是一个很大的问题,比如 java.util.Date。它是可变的,所以你不能直接从方法中返回它。这意味着你最终会做各种 defensive copying .这会增加对象增殖。

另一个主要好处是不可变对象(immutable对象)没有 synchronization问题,顾名思义。那就是 scalability 的地方问题进来了。写作multithreaded代码很难。不可变对象(immutable对象)是(大部分)规避问题的好方法。

至于“静态类”,根据您的评论,我认为它是指带有 factory methods 的类,通常是这样描述的。那是一个不相关的模式。可变类和不可变类都可以具有公共(public)构造函数或具有静态工厂方法的私有(private)构造函数。这对类的(不)可变性没有影响,因为可变类的状态可以在创建后更改,而不可变类的状态在实例化后不能更改。

然而,静态工厂方法还有其他好处。这个想法是封装对象创建。

关于java - 可变类还是不可变类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1284727/

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