首页 / JAVA / 拆分或不拆分类(用Java)
拆分或不拆分类(用Java)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了拆分或不拆分类(用Java),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2670字,纯文字阅读大概需要4分钟。
内容图文
![拆分或不拆分类(用Java)](/upload/InfoBanner/zyjiaocheng/741/67c89e88b6c54ba9a0ffb39c6acb9900.jpg)
我有一个句子,在不同的阶段进行分析.首先,我得到一些属性(比如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
}
我的问题是:哪种设计更受欢迎,为什么?如果还有更好的方法来完成我在这里尝试做的事情,我也想听听它.
解决方法:
您需要考虑的是,在您的问题域中,AnalyzedSentence和FinalSentence是否足够独特,可以拆分或合并.
很明显,他们正在处理类似的数据并密切合作以实现目标.
对我来说,分析和最终只是说句子可以进入,虽然这是基于我对你正在研究的问题的有限知识,所以我希望以某种方式将它们结合起来.
编辑
根据更多信息,我想我会设计如下:
Sentence类封装了原始句子,标签和提取的类别(或者你正在提取的任何内容,我假设它是基于你的描述的类别),以及设置,获取和提取信息的操作.
Sentence类存储TagList,其中包含所有标记,原始字符串和提取的类别.它还通过创建一个Extractor来封装数据的提取,并在数据需要提取时将它传递给TagList(我把它放在构造函数中,但是它可以放在一个方法中,调用它取决于你需要什么时候提取数据).
因此,通过这种方式,操作原始句子所需的一切都在Sentence类中.当然,你可能知道一些我不这样做的东西,这使得这种方法不合适,但这里有一些代码来说明我的意思:
public class Sentence {
private TagList tags
private String category;
private String sentence
public Sentence(String newSentence) {
sentence = newSentence;
Extractor<TagList> e = new Extractor<TagList>()
tags = e.extractTags(sentence);
category = new Category(tags);
}
public String getXYZ() {
}
public void setXYZ(...) {...}
private extractTags(String s){ ...}
// getters, setters
}
public class TagList{
private List<String> tags;
....
//rest of class definition
}
内容总结
以上是互联网集市为您收集整理的拆分或不拆分类(用Java)全部内容,希望文章能够帮你解决拆分或不拆分类(用Java)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。