首先,请原谅我的伪代码,我认为在这种情况下使用伪代码比完整代码更易读。请假设伪代码中的属性实际上是带有getter和setter方法的字段,除了
ArticleElement
之外,在该元素中,它只需要是可通过直接getter方法或两步getter方法(即getArticleSource().getName()
)从对象访问的属性。
假设我有一个模板实体:
ArticleTemplate
Long id;
String name;
String description;
Integer amount;
Schedule schedule;
它(通过其计划)用于在不同日期创建许多潜在的子实体:
Article
Long id;
String name;
String description;
Integer amount;
Date date;
Boolean complete;
ArticleTemplate template;
有些子实体并非由父实体创建,它们可以是独立的(模板可以为空)。
对于我的用户界面,我想创建一个排序和合并列表:
a)来自父实体的潜在子实体
b)之前从父实体创建的真实子实体
c)独立创建的孤儿子实体
然而,我需要向此列表的元素添加一些属性以确定这些元素之间的差异:
ArticleElement
// actual value if from Article, null if from potential from ArticleTemplate
Long id;
// actual value if from Article or ArticleTemplate
String name;
// actual value if from Article or ArticleTemplate
String description;
// actual value if from Article or ArticleTemplate
Integer amount;
// actual value if from Article, simulated if from potential from ArticleTemplate
Date date;
// actual value if from Article, false if from potential from ArticleTemplate
Boolean complete;
// actual value (nullable) if from Article, self if from potential from ArticleTemplate
ArticleTemplate template;
// false if from Article, true if from potential from ArticleTemplate
Boolean templateSimulation;
// once the list is sorted, a running tally of this.amount is to be stored on this object
Integer runningTally;
// would be type of interface if Article and ArticleTemplate implement same
Object source;
显然我至少会有3个类,但是有一些不同的方法和接口相关。
我希望尽可能避免克隆和属性复制,并在有益处时使用继承。
欢迎提出建议!
p.
children-parent
关系是什么意思?Container-content
或者creator-result
呢?还有potential
是什么意思? - khachik