说我有一个班级,用户:
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>
谢谢!
答案 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中的工作方式相同,但你必须确认。