我的项目有问题。我想知道这种情况是否有设计模式:
我正在从数据库中检索一行具有不同数据类型的对象
Object[] userInformationsRow = getUserInformationsFromDataBase();
int idColumn = 0;
int nameColumn = 1;
int birthDateColumn = 2;
//
Integer idUser = (Integer)userInformationsRow[idColumn];
String nameUser = (String)userInformationsRow[nameColumn];
Date birthDateUser = (Date)userInformationsRow[birthDateColumn];
还有另一种方法来开发这种代码,在我看来,代码很长很难以及将来很难改变。
答案 0 :(得分:1)
你可以从getUserInformationsFromDataBase()
返回一个类,这很常见。如果您确实需要一个名称,那么搜索 DTO 和 DAO (或存储库)
UserInfos user = getUserInformationsFromDataBase();
user.getId();
user.getName();
user.getBirthDate();
如果您无法控制getUserInformationsFromDataBase()
,则可以隐藏UserInfos
后面的这个混乱,这是一种适配器:
class UserInfos {
private static final int ID = 0;
private static final int NAME = 1;
private final Object[] datas;
public UserInfos(Object[] datas) {
this.datas = datas; // This is NOT a good idea, search for array defensive copy
}
public Integer getId() {
return (Integer) datas[ID];
}
public Integer getName() {
return (String) datas[NAME];
}
}
答案 1 :(得分:0)
我会做这样的事情:
int ix = 0;
Integer idUser = (Integer)userInformationsRow[ix++];
String nameUser = (String)userInformationsRow[ix++];
Date birthDateUser = (Date)userInformationsRow[ix++];
但是考虑将UserInformation
类与您需要的字段一起使用,并以某种方式将其映射到您的数据库。