gpt4 book ai didi

java - 拆分或不拆分类(在 Java 中)

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:36:42 24 4
gpt4 key购买 nike

我有一个句子,在不同的阶段进行了分析。首先,我得到一些属性(比如 X、Y、Z):

public class AnalyzedSentence {
private String X;
private String Y;
private String Z;

public AnalyzedSentence(String sentence) {
extractX();
extractY();
extractZ();
}

// getters, setters
}

然后,我使用这些属性进一步分析句子以获得另一个属性,比如“XYZ”,之后我创建了以下类:

public class FinalSentence {

private AnalyzedSentence data;

private String XYZ;

public FinalSentence(String XYZ, AnalyzedSentence data) {
this.data = data;
this.XYZ = XYZ;
}

// getters, setters
}

工作流程是这样的:

public class SentenceAnalyzer {
/// ...
public FinalSentence analyze(String sentence) {
AnalyzedSentence as = new AnalyzedSentence(sentence); // every attribute of "as" can be calculated beforehand
String XYZ = SpecialClass.extractXYZ(sentence, as); // extract XYZ (needs a special class), based on as
return new FinalSentence(XYZ, as);
}
}

或者,我可以只有一个类来保存所有信息,在属性被提取时填充它们,这可能会导致一些空结果。应该是这样的:

public class Sentence {

private String X;
private String Y;
private String Z;
private String XYZ;

public Sentence(String sentence) {
extractX();
extractY();
extractZ();
}

public String getXYZ() {
// with this design, this method can be called, even if XYZ was not extracted yet.
// remember that XYZ cannot be extracted as X,Y,Z
}

public void setXYZ(...) {...}

// getters, setters
}

我的问题是:首选哪种设计,为什么?如果还有更好的方法来完成我在这里尝试做的事情,我也很想听听。

最佳答案

我个人更喜欢第一种设计,即有两个类的设计。分析和结果之间的区别对我很有吸引力。我更喜欢将类视为责任的集合,而不是数据的集合,使用两个不同的类可以使每个类的责任更加明确。

关于java - 拆分或不拆分类(在 Java 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1149315/

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