지연된 로딩
지연된 로딩, 레이지 로딩(lazy loading), 게으른 로딩은 필요 시점까지 객체의 초기화를 연기시키기 위해 컴퓨터 프로그래밍에 흔히 사용되는 디자인 패턴의 하나이다. 적절하게 사용될 경우 프로그램의 운영 차원에서 효율성에 기여할 수 있다. 그 반대의 경우 열정적인 로딩(즉시 로딩, eager loading)이라고 부른다. 웹페이지 등의 케이스에서 네트워크 콘텐츠가 접근되고 초기화 시간을 최소로 유지해야 하는 상황에서 이상적이다.
구현[편집]
구현 방법으로는 지연된 초기화, 가상 프록시, 고스트 밸류 홀더가 있다.[1] 제각기 장단점이 있다.
지연된 초기화[편집]
private int myWidgetID;
private Widget myWidget = null;
public Widget MyWidget
{
get
{
if (myWidget == null)
{
myWidget = Widget.Load(myWidgetID);
}
return myWidget;
}
}
private int myWidgetID;
private Widget myWidget = null;
public Widget MyWidget
{
get { return myWidget = myWidget ?? Widget.Load(myWidgetID); }
}
고스트[편집]
$userData = array (
"UID" = > uniqid(),
"requestTime" => microtime( true ),
"dataType" => "",
"request" => ""
);
if (isset( $_POST['data'] ) && $userData) {
//...
}
밸류 홀더[편집]
private ValueHolder<Widget> valueHolder;
public Widget MyWidget
{
get
{
return valueHolder.GetValue();
}
}
각주[편집]
- ↑ Martin Fowler (2003). 《Patterns of Enterprise Application Architecture》. Addison-Wesley. 200–214쪽. ISBN 0-321-12742-0.