У меня есть следующие модели:
class IdNamePair
{
protected int id;
protected String name;
public IdNamePair()
{
id = 0;
name = "";
}
}
class Voyage extends IdNamePair
{
//Several string and int variables
}
class Employee extends IdNamePair
{
//Several string and int variables
}
class Vessel extends IdNamePair
{
//Some string and int variables
}
class Details
{
//Several string and int variables
}
class Summary
{
protected Vessel vessel;
protected Employee chief;
protected Employee operator;
protected List<Details> details
}
class Update
{
protected LocalDateTime created;
protected LocalDateTime modified;
List<Summary> summaries;
//Some string and int variable.
}
Я не понимаю, как создать сложный объект с несколькими списками, картами и экземплярами других классов.Я могу заменить существующие типы полей соответствующими типами свойств (String
до StringProperty
, double
до DoubleProperty
и т. Д.), Но как мне обрабатывать сложные типы (List<Summary>
, HashMap<String, Vessel>
, List<Details>
)?
Другой вопрос: хочу ли я поддерживать свойства, нужно ли преобразовывать существующие объекты или мне нужно создавать новые?Я могу заменить
class IdNamePair
{
protected int id;
protected String name;
}
на
class IdNamePair
{
protected IntegerProperty id;
protected StringProperty name;
}
или предоставить новый тип
class IdNamePairEx
{
protected IntegerProperty id;
protected StringProperty name;
public IdNamePairEx(IdNamePair idNamePair);
///to simple object
public IdNamePair toIdNamePair();
///from simple object
public void fromIdNamePair(IdNamePair idNamePair);
}
и использовать его при работе с кодом GUI.Этот подход обеспечил бы обратную совместимость с существующим кодом (сериализация JSON, JDBC), но фактически удвоил бы количество моих классов модели.Какой предпочтительный способ?
Обновление:
У меня есть программа, которая взаимодействует с PostgreSQL и выполняет различные операции CRUD.Соответствующие классы существуют для каждой таблицы в базе данных.Мне нужно разработать новый модуль, который будет использовать существующие классы, и я хотел бы реализовать обновления GUI через привязки и свойства.Нужно ли заменять каждый тип переменной на соответствующий ему тип свойства (String
-> StringProperty
) или лучше создавать похожие классы, которые работают через свойства и предоставляют методы преобразования (class Vessel
-> class VesselWithPropertiesInteadOfRawTypes
)