0

我阅读了Effective Java: Programming Language Guide Joshua Bloch中的一些内容,发现我应该避免使用可变对象。因为我读过这本书,我知道如何使可变对象不可变(例如使用 private 和 final 修饰符)。

data holder class好吧,但是我有一个带有一些私有字段的“假人” 。每个字段都可以通过 get 方法和相应的 set 方法访问。所以由于这个设置方法,这个类的对象不是不可变的。

现在的问题是如何避免这些设置方法?将所有(例如 20 个)参数传递给对象构造函数?我认为这不是很好的设计,因为我必须注意参数的顺序,如果我不想设置特殊参数则必须传递空引用等等。

所以我考虑以下方法:

  • 创建一个包含所有 get 方法的接口,并让它从虚拟数据持有者类中实现
  • 使用私有构造函数和静态工厂方法创建一个抽象类,该方法返回数据持有者对象的“get”接口实例。
  • 在静态工厂方法中,我使用所有必要的设置方法配置数据持有者对象
  • 将数据持有者类包设为私有,以便对象只能通过抽象类中定义的静态工厂方法进行实例化

在下一步中,我将配置和创建的内容存储data holder objects在一个列表中。

modify尽管对象是不可变的,但读取对象和对象的最佳方法是什么?使用静态工厂方法创建一个新对象,该方法在内部设置新值并将其替换为列表中的对象?

4

1 回答 1

0

正如@NilsH 指出的那样:您应该选择Builder 模式,理想情况下基于fluent interface

例如,您可以查看make-it-easy

于 2013-04-24T15:51:59.100 回答