지연 초기화를 사용할 수 있습니다 .
컴퓨터 프로그래밍에서 게으른 초기화는 객체 생성, 값 계산 또는 기타 필요한 고가의 프로세스를 처음 필요할 때까지 지연시키는 전술입니다.
이렇게하면 시간 결합을 피할 수 있습니다. 즉, 클래스 소비자는 특정 순서로 특정 메소드를 호출해야합니다. start()
먼저 전화를 거는 것은 수업이 내부적으로 어떻게 작동하는지 알아야하는 방법입니다. 이는 나중에 변경할 수 있기 때문에 나쁩니다.
비싼 초기화는 처음 필요할 때까지 연기하십시오.
예:
public class FooClass{
private ExpensiveResource resource;
private CheapResource cheap;
public FooClass(String someParameter){
// constructor: initialize CheapResource cheap
// but NOT ExpensiveResource resource
}
public ExpensiveResource getExpensiveResource(){
if (resource == null) {
this.initializeExpensiveResource();
}
return this.resource
}
public String getExpensiveResourceName(){
if (resource == null) {
this.initializeExpensiveResource();
}
return this.resource.getName();
}
public CheapResource getCheapResource(){
return this.cheap;
}
private initializeExpensiveResource(){
// do expensive initialization of field "resource"
}
}
public class Test{
public static void main (String args[]){
FooClass foo = new FooClass("some string");
CheapResource cr = foo.getCheapResource();
String s = foo.getExpensiveResourceName();
// just now is the expensive resource initialized
}
}
start
생성자와의 차이점은 무엇입니까? etc ...