gpt4 book ai didi

java - 创建具有多个字段的对象的最可维护和可读的方式

转载 作者:行者123 更新时间:2023-11-30 06:20:19 24 4
gpt4 key购买 nike

我正在创建一个 Java 类,它应该封装一个天体的六个轨道元素、同一天体的六个密切元素、天体的质量和天体的名称。这意味着我的 Java 对象必须使用不少于 14 个参数来创建,我现在正在考虑将另外 4 个扰动常数作为参数,这将使这个数字达到 18 个。

这是带有十四个参数的样子:

new Planet("Mercury", 3.3022E23,0.387098, 0., 0.205637, 0.00002123, 7.00559, -0.00590158, 252.252, 149473., 77.4577, 0.1594, 48.3396, -0.122142)

我看过周围的人说,接受超过 10 个参数的类可能设计不佳。他们还说一个类应该做一件事,而且只做一件事。好吧,我只是从字面上做一件事,到目前为止,该类所做的唯一一件事就是使用这些参数计算天体的位置作为时间的函数。

处理这种情况的最佳做法是什么?

最佳答案

我推荐 Bloch Builder,作者 Joshua Bloch(第 2 项)在 Effective Java,第 2 版中:

http://www.informit.com/articles/article.aspx?p=1216151&seqNum=2

这是一种专门为具有大量字段的类设计的模式,尽管它适用于可选参数,但您的情况并非如此。但是,我仍然认为这可能是您处理它的好方法。比如

Planet p = new Planet.Builder("Mercury").gravity(3.3022E23).
anotherAttribute(0.387098).avgTemp(0.).
somethingElse(0.205637).andAnotherThing(0.00002123).
....
build();

(将它们更改为有意义的东西...我不知道这些数字实际代表什么:)

我建议不要在 Planet 对象中使用 setter,以使字段不可变(https://www.google.com/search?q=fields+immutable+java+benefit)。

希望对您有所帮助。

关于java - 创建具有多个字段的对象的最可维护和可读的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21974920/

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