0

我正在开发一个具有多面属性的 bean 类(名称有名字、姓氏和中间名)。请比较我的两种方法以将其合并到我的应用程序中。

方法一:

public class SampleVO {
String firstName;
String middleName;
String lastName;
// getters and setters
}

方法二:

//Main object
public class SampleVO1 {
NameVO name = new NameVO();
// getters and setters
}
//Name object
public class NameVO {
    String firstName;
    String middleName;
    String lastName;
    // getters and setters
}

注意:以上只是一个示例。要求是对一组属性进行分组。上述性能/代码标准中的哪种方式会好?

4

3 回答 3

2

这实际上取决于您的用例。如果您需要NameVO其他地方,或者将 , 封装在一个单独的对象中对您来说更有意义,那么firstName请选择第二种解决方案。如果这对您没有意义,请选择第一个。middleNamelastName

两种解决方案都不应该有任何性能问题。如果您想使用第二种解决方案,您可以NameVOSampleVO1. 所以是这样的:

public class SampleVO1 {
    protected NameVO nameVo = new NameVO();

    public String getFirstName() {
        return nameVo.getFirstName();
    }

    public void setFirstName(String firstName) {
        this.nameVo.setFirstName(firstName);
    }

    // etc.
}
于 2013-11-13T12:23:46.057 回答
1

首先,确保它们是私有的/受保护的。他们不应该在他们自己的班级之外直接访问:

public class NameVO {
  protected String firstName;
  protected String middleName;
  protected String lastName;
// getters and setters
}

假设 SampleVO1 将做的不仅仅是初始化类,方法 2 将是可取的。

于 2013-11-13T12:18:18.287 回答
0

单级间接通常并不重要。您看到的延迟通常是一次内存访问,即 4 - 200 个时钟周期。优化代码通常不到 10 纳秒。

注意:每个 String 对象都有两级间接。如果间接影响了您的性能,那么您不仅会使用原语,也不会使用堆外内存,根本不会String

简而言之,成本只是使用一个字符串的成本的一小部分。

在考虑性能问题时,您应该从最简单和最清晰的实现开始,并且只有在您测量了性能问题后,您才应该出于性能原因更改代码,并且您应该测试您的更改,因为通常您的“改进”会更糟,或者没有更好,只是更复杂。

于 2013-11-13T12:30:53.430 回答