任意场存储新值的设计模式

时间:2012-02-09 16:00:36

标签: design-patterns database-design

说我有一个班级,用户:

public class User {
    private String name;
    private Integer age;
    private Double cash;

    // Getters and setters...
}

一些魔法系统为所有用户吐出数据,我的系统会选择它。有些员工需要报告这些数据,但其中一些数据是不正确的。由于源系统很神奇,没有人可以搞乱其中的用户数据,所以他们需要使用我的系统更新这些数据,以便在报告中正确。因此,我想创建一个类似于以下内容的类:

public class UserUpdate {
    private UserPropertyEnum property;
    private Something newValue;
    private Date dateAdded;

    // Getters and setters...
}

所以问题在于我不知道我正在改变的领域的类型。我想我可以创建Object类型的newValue,并根据属性枚举的值进行强制转换...

无论如何,是否有一个好的设计模式可以解决这个问题?如果存在,它是如何在数据层中实现的(我正在使用关系数据库)?

(请不要“你是不可改变的魔法系统是愚蠢的...不要存储已知不正确的数据”帖子,因为我知道这一点,而且对它做任何事都无能为力。)< / p>

谢谢!

1 个答案:

答案 0 :(得分:1)

在C#中,我会使用泛型。你可以这样做:

public class UserUpdate<T> {
    private UserPropertyEnum property;
    private T newValue;
    private Date dateAdded;

    // Getters and setters...
}

然后使用以下方法为工资创建更新:

UserUpdate<Int32> salaryUpdate = new UserUpdate<Int32>();
salaryUpdate.newValue = 50000; //This will be an int, no need to cast

我假设您的更新被硬编码为某种“修补”您的魔法数据的机制,因此每个更新的类型都是已知的。我相信泛型在Java中的工作方式相同,但你必须确认。

相关问题