如何在复杂对象中正确实现属性

时间:2018-12-06 10:13:06

标签: java class javafx properties

我有以下型号:

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.
}

我不明白如何用几个列表,地图和其他类的实例创建一个复杂的对象。我可以用相应的属性类型(StringStringPropertydoubleDoubleProperty等替换现有的字段类型,但是如何处理复杂的类型({{1 }},List<Summary>HashMap<String, Vessel>)?

另一个问题是我是否要支持属性,应该转换现有对象还是需要创建新对象。我可以替换

List<Details>

使用

class IdNamePair
{
    protected int id;
    protected String name;
}

或者我可以提供一种新类型

class IdNamePair
{
    protected IntegerProperty id;
    protected StringProperty name;
}

并在处理GUI代码时使用它。这种方法将提供与现有代码(JSON序列化,JDBC)的向后兼容性,但实际上将使模型类的数量增加一倍。什么是首选方式?

更新

我有一个与PostgreSQL通信并执行各种CRUD操作的程序。数据库中每个表都有相应的类。 我需要开发一个使用现有类的新模块,并且我想通过绑定和属性来实现GUI更新。 我是否需要用对应的属性类型(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); } -> String来替换每种类型的变量,还是最好创建通过属性操作并提供转换方法的类似类(StringProperty -> class Vessel)?

0 个答案:

没有答案