为“奇怪的”硬编码值抽象条件逻辑有什么好方法?

时间:2012-01-24 21:15:05

标签: java design-patterns data-conversion hardcoded

我正在研究一个非常简单的问题,包括设计分支。

请用我来承担,我用模糊的语言描述情况。 我有一个实体,称之为EntityA:

EntityA{
   attr1 : type1;
   attr2 : type2;
   . . .
}

此实体存储在数据库中,一切都运行良好。

作为一项新要求,我需要向EntityA添加审计属性。现在我有:

EntityA{
   . . .
   whenCreated : Date (not null);
   whoCreated : User (not null);
   whenLastUpdated : Date;
   whoLastUpdated : User;
}

将新列添加到数据库时,我指定了默认值:   whoCreated =系统   whenCreated = 2012年1月24日。

要求的另一部分是我没有在屏幕上显示“创建”属性,如果它们具有转换/默认值。

我知道我需要在显示层中放置逻辑来测试它。也就是说,在明确地将条件逻辑放在那里似乎很有趣。

例如,而不是:

if((entA.whenCreated != '24-Jan-2012') 
        && (entA.whoCreated != 'System')){
    showCreationAudit();
}

我想我应该这样做:

if( shouldDisplayCreationAudit(entA) ){
    showCreationAudit();
}

所以,请记住,我可能会遇到类似的情况,为“奇怪的”硬编码值抽象条件逻辑的好方法是什么?

2 个答案:

答案 0 :(得分:2)

我在解释你的问题是,“我有一个模型对象列表,有些有默认值,有些没有...我在哪里决定要显示什么?”

我认为视图层完全,你不想处理它。

模型对象只保存数据,并有一些方法来操作数据。视图的工作是确定如何显示数据。

答案 1 :(得分:1)

在业务层中过滤数据而不是将所有内容发送到表示层并决定是否渲染天气的良好做法。希望这会有所帮助。