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

1mrurvl1  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(224)

我有以下型号:

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

我无法理解如何创建一个包含多个列表、Map和其他类示例的复杂对象。我可以用相应的属性类型替换现有的字段类型( StringStringProperty , doubleDoubleProperty ,等等),但如何处理复杂类型( 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 )?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题