幽灵 (反面模式)

在程式設計中，幽灵（）是指一些生命期很短，沒有內部狀態的物件，這些物件是只用來進行初始化或調用其他生命期較長物件的方法。幽灵是一種反面模式。原始定義是由 Michael Akroyd 於1996年在Object World West Conference中提出：
「這些生命期很短的物件就像幽灵馬車或騷靈現象一様，神祕的出現及消失。因此代碼變的更難維護，而且其中會有不必要的資源浪費。這類反面模式的典型原因是不好的物件設計。」

幽灵物件常常可以由其名稱來識別：例如 "manager_"、"controller_"或"start_process"等。

有時幽灵物件的創建是因為程式設計者預期需要使用一個複雜的架構，例如在命令模式下同一個方法需適用於客戶端及調用端，因此程式設計者將其分為二個階段，只是複雜的架構後來沒有實現，只留下幽灵物件。不能將幽灵物件和其他在MVC等設計模式中使用，生命期較長，有狀態的物件混為一談。

若要移除幽灵物件，可直接刪除物件，將其機能直接加入要調用幽灵物件的物件中，加入機能的方式可以透過繼承或是混入（mixin）的方式。

相關條目
反面模式
工厂方法
YAGNI
參考資料

外部連結
 Development AntiPatterns 

Category:反模式