回答
我聽過的設計模式和'幽靈'的唯一參考文獻是Lazy-Loading。
由於延遲加載僅涉及加載時,它的實際需要,你可以把它看成是一個「鬼」在那之前的對象。你可以看到它的輪廓,但是在加載之前不能真正使用它。
是的,我正在閱讀,但它並沒有對我有很大的意義 – 2010-06-09 18:01:33
@大衛:是的,從什麼時候有人觸摸他們的時候鬼物體實現? – intuited 2010-06-09 19:37:56
這不是在GOF也不福勒POEAA,我可以把它作爲類似其代理的延遲加載的時候,唯一的事情。
這將是有道理的 – 2010-06-09 18:08:25
幽靈在PoEAA第202,206-14頁提到。鬼是一個懶惰的加載對象,只包含足夠的信息來按需要實例化自己。它們可能很有用,因爲如果它們使用加載程序註冊自己,它們可以在第一次訪問時觸發大量類似的重影(不知道如果Fowler提到那一點)。
我剛剛創建了一個,然後在詢問a question here in SO後才意識到它是一個Ghost模式。按照該鏈接的原始PHP代碼,這裏是一個僞代碼版本:
// 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);
}
}
當你初始化這個便宜類,沒有什麼是內創建。這是當你實際調用一個方法時,「原始」對象被創建,如果沒有,並從中檢索數據。如果你不打算使用它,它會使你不初始化原始,如果它是一個昂貴的操作。
- 1. 設計模式 - 這是什麼模式?
- 2. 這是什麼樣的設計模式?
- 3. 什麼是「調度員」設計模式?
- 4. 這是什麼JS設計模式?
- 5. 這是什麼設計模式?
- 6. 什麼是非鎖定設計模式?
- 7. 這是什麼設計模式?
- 8. 什麼是動作設計模式?
- 9. 什麼是設計模式標題?
- 10. 什麼是門面設計模式?
- 11. 這是什麼設計模式?
- 12. 什麼是四人幫設計模式
- 13. .net中的設計模式是什麼?
- 14. 是什麼意識到設計模式?
- 15. 這是什麼設計模式?
- 16. Opengl TRIANGLE_STRIPS創建重複的鬼魂
- 17. RVM的鬼魂糾纏着我
- 18. 在Discord中踢「鬼魂」的用戶
- 19. 基準測試Node.js與JMeter的鬼魂
- 20. Redis掃描的奇怪鬼魂
- 21. 什麼是鬼頁面?
- 22. 爲什麼這個警報框不會被觸發?在這裏追逐鬼魂?
- 23. WordPress的模塊/插件管理的設計模式是什麼?
- 24. 什麼是Active Record - 設計模式或模塊?
- 25. 開放式購物車中的mvcl設計模式是什麼?
- 26. 格式化數字的最佳設計模式是什麼?
- 27. 「monkeypatching」背後的正式設計模式是什麼?
- 28. 什麼是使用Selenium PageObject設計模式的最佳方式
- 29. 什麼是實現Viewholder設計模式的最佳方式。
- 30. Codeigniter使用什麼設計模式?
*糟糕的笑話,我可以做... * – 2010-06-09 18:04:11
在架構採訪我常常問人,「所以,你能告訴我有關LeftHandedSpinWidget設計模式嗎?」看着他們在混亂中搏鬥。沒有LeftHandedSpinWidget設計模式。 – 2010-06-09 18:05:28
@Swingline這太殘酷了。儘管Ghost是一個真正的模式。 – 2010-06-09 18:07:16