假设我在Java中有一个方法,该方法可在数据库中查找用户并返回其地址和所在团队。
我想从方法中返回两个值,并且不想将方法一分为二,因为它涉及数据库调用,而拆分涉及的调用次数是原来的两倍。
考虑到中型到大型软件项目中的典型问题,最佳选择是什么?
whatGoesHere getUserInfo(String name) {
// query the DB
}
我知道该问题与现有问题有重复的味道,但是彼此之间的问题都有一定的区别,使其与本示例有所不同,因此我认为值得再次提出。
最佳答案
您有一些选择。
最多的一次面向对象操作是创建一个封装这2个属性的类,类似这样
private class UserInfo {
private Address address;
private Team team;
}
或者,如果您想要一个简单的解决方案,则可以返回一个对象数组:
Object[] getUserInfo(String name) {
// query the DB
return new Object[]{address,team};
}
或者,如果您想将此方法公开给某些库,则可以使用一些接口来使用这些属性,如下所示:
class APIClass{
interface UserInfo{
public Address getAddress();
public Team getTeam();
}
UserInfo getUserInfo(String name) {
// query the DB
return new UserInfo(){
public Address getAddress(){ return address; }
public Team getTeam(){ return team; }
};
}
}