Необходимо учитывать, являются ли в вашей проблемной области 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
}