У меня есть программа, которая набирает свидетельские показания на месте преступления из разных предметов.У каждого вида предмета есть свой класс отчета.Например:
public class EyeWitnessReport extends AbstractReport {
private String details;
private String relation;
private QuestioningResults questioningResults;
private Integer stressLevel;
private EnumSet<CrimeFacts> crimeFacts;
private Religion religion; //to see if swearing on the Bible is an issue
}
public class ExpertWitnessReport extends AbstractReport {
private Expertise fieldOfExpertise;
private boolean relatedToAccused;
private List<Conflict> conflicts;
}
Основная функция моего приложения берет все отчеты и объединяет их в один класс CrimeScene, который содержит все детали места преступления (по приоритетам и т. Д.)
public CrimeScene mergeReports(List<AbstractReport> sources){
//takes all the reports in sources and returns one CrimeScene with the most relevant fields
}
Мой вопрос заключается в том, что класс CrimeScene в основном состоит из данных отчетов по определенной логике.Он имеет 70 возможных полей (поля каждого типа отчета), хотя в среднем заполнено только около 10-20.Кроме того, у него есть 2-3 собственных поля (creationTime, reportsOfficer и т. Д.)
Как мне его реализовать?Это лучшая реализация, чтобы сделать CrimeScene обычным классом (70 жестко закодированных полей, из которых в среднем будет заполнено не более 20), или динамическим классом, использующим DynaBean, Map<String, Object>
или что-то в этом роде?