DTO的父/子模型

时间:2011-12-17 11:12:06

标签: jersey parent-child dto

我不确定这种情况是否会与泛型相关,而不是 DTOs ,但在这里:

我有一个代表的DTO。 可以将儿童其他(s)或 ResourceLink 作为强>(S)。这意味着子项可以是以下两种类型之一: Person (DTO)或 ResourceLink 。它的类型是通过 queryParam 确定的,因此在逻辑上通过以下流程确定。我想仅使用 ONE 集合对象来表示它们,并且我不知道最好的方法。

这是我到目前为止所做的:

public class PersonDTO<T> {

    @XmlElementWrapper(name = "children")
    @XmlElement(name = "child")
    List<T> children;
    // other stuff

}

通过这种方法,我需要根据if...else条件定义翻译类型。

之前我有2个不同的集合,其中一个仍然是 NULL 。我还想过在新的DTO中将关系提取出来作为ChildrenDTO(不确定这是不是一个好主意)

我想知道这种情况是否有最佳做法,否则,如果可以根据条件声明PersonDTO<PersonDTO>PersonDTO<ResourceLink>

提前致谢!

1 个答案:

答案 0 :(得分:1)

我建议使用第三种类型的List子元素:

    public interface PersonResolver () {
          Person resolvePerson ();
    }

    public class Person implements PersonResolver {
          Person resolvePerson () { return this; }
    }

    public class ResourceLink implements PersonResolver {
          Person resolvePerson () {
               if (myLinkTargetType == TARGET_TYPE_PERSON)
                      { return (Person) myTarget; }
               return null;
          }
    }