누군가 최근에 고스트 디자인 패턴에 관한 질문을했습니다.고스트 디자인 패턴이란 무엇입니까?
고스트 디자인 패턴은 무엇이며 어떻게 구현됩니까? 웹에서만 스 니펫을 찾을 수 있습니다.
누군가 최근에 고스트 디자인 패턴에 관한 질문을했습니다.고스트 디자인 패턴이란 무엇입니까?
고스트 디자인 패턴은 무엇이며 어떻게 구현됩니까? 웹에서만 스 니펫을 찾을 수 있습니다.
디자인 패턴과 '고스트'에 대한 유일한 언급은 Lazy-Loading입니다.
실제로 지연이 필요할 때만 객체를로드하는 작업이 포함되기 때문에 그때까지 '고스트'라고 생각할 수 있습니다. 개요를 볼 수는 있지만로드 될 때까지 실제로 사용할 수는 없습니다.
그래, 그걸 읽었는데 나 한테는 의미가별로 없어. –
@David : 그래, 누군가가 그걸 만졌을 때 유령이 언제 실현 되니? – intuited
GOF도 Fowler PoEAA도 아니고, 게으른 로딩을위한 프록시와 비슷한 것으로 생각할 수있는 유일한 것입니다.
그건 이해할 만하다. –
유령은 PoEAA, pp 202, 206-14에 언급되어 있습니다. 고스트는 필요에 따라 인스턴스화 할 수있는 충분한 정보가 포함 된로드 된 객체입니다. 그것들은 로더 (Fowler가 그 비트를 언급하더라도 dunno)를 등록하면 첫 번째 액세스에서 유사한 유령의 대량로드를 트리거 할 수 있기 때문에 유용 할 수 있습니다.
나는 실제로 하나를 만든 다음 묻어서 유령 패턴임을 깨달았다. a question here in SO. 이 싼 클래스를 초기화하면
// A "cheap" class
class Namespace_Original
{
// The expensive, uninitialised object
private Original
// The "cheap" data needed to initialize Original
private Data
// Constructor for the cheap class
public Namespace_Original(Data)
{
this.Data = Data
}
// Whenever you call a method of Original
public __call(method_name, method_data)
{
// Create the expensive object only the first time it's going to be used
if (empty(this.Original))
this.Original = new Original(this.Data);
// Call the Original's method with it's arguments
this.Original.name(method_data);
}
}
, 아무것도 안에 작성되지 않습니다 : 원래 PHP 코드에 대한 링크를 따라 여기에 의사 코드 버전입니다. 그것은 "Original"객체가 생성 된 메소드를 호출 할 때, 실제로 존재하지 않는 객체와 데이터가 검색된 메소드를 호출 할 때입니다. 값 비싼 조작이라면, 사용하지 않으려는 경우 원본을 초기화하지 않게 만듭니다.
* 내가 할 수있는 나쁜 농담 ... * –
건축가 인터뷰에서 필자는 "LeftHandedSpinWidget 디자인 패턴에 대해 아무 것도 말해 줄 수 있습니까?" 혼란과 씨름하는 것을 지켜보십시오. LeftHandedSpinWidget 디자인 패턴은 없습니다. –
@Swingline 그건 잔인합니다. 유령은 진짜 본이다. –