假设我在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; }
    };
  }
}

10-02 06:02
查看更多