我有以下型号:
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更新。
我需要用相应的属性类型替换每种类型的变量吗(
一串
->
StringProperty
)还是创建通过属性操作并提供转换方法的类似类更好(
class Vessel
->
class VesselWithPropertiesInteadOfRawTypes
)?