延迟创建的方法称为惰懒初始化。如果你要创建一个对象,它有一个属性会用到大量的资源——你知道这个属性可能不会访问到——你应该考虑在需要时才创建这个对象。如果你正在创建大量对象,你应该特别注意这个问题。
以Policy类为例:
public class Policy {
private SalesPersonsalesperson;
// code missing to conserve space. . .
public SalesPersongetSalesPerson() {
return this.salesPerson;
}
}
当Policy创建时,你可以创建一个SalesPerson对象:
public Policy() {
this.salesPerson = new SalesPerson();
}
或者你可以用懒惰初始化的延迟SalesPerson对象的创建,直到真正需要它的时候:
public Policy() {
}
public SalesPersongetSalesPerson() {
if ( this.salesPerson == null ) {
this.salesPerson = new SalesPerson();
}
return this.salesPerson;
}
注意:当使用这个模式时,如果你事先知道总是要使用这个属性,那么惰懒初始化是不正确的。因为它只会增加你的代码的复杂性。另外,如果你需要你的类是线程安全的,那么你需要同步SalesPerson对象的测试和创建。
