幽靈_(反面模式)

在程式設計中 ， 幽靈  是指一些生命期很短 ， 沒有內部狀態的物件 ， 這些物件是隻用來進行初始化或調用其他生命期較長物件的方法 。 幽靈是一種反面模式 。 原始定義是由 Michael Akroyd 於1996年在Object World West Conference中提出 ： 「 這些生命期很短的物件就像幽靈馬車或騷靈現象一様 ， 神祕的出現及消失 。 因此代碼變的更難維護 ， 而且其中會有不必要的資源浪費 。 這類反面模式的典型原因是不好的物件設計 。 」 幽靈物件常常可以由其名稱來識別 ： 例如 " manager _ " 、 " controller _ " 或 " start_process " 等 。 有時幽靈物件的創建是因爲程式設計者預期需要使用一個複雜的架構 ， 例如在命令模式下同一個方法需適用於客戶端及調用端 ， 因此程式設計者將其分爲二個階段 ， 只是複雜的架構後來沒有實現 ， 只留下幽靈物件 。 不能將幽靈物件和其他在MVC等設計模式中使用 ， 生命期較長 ， 有狀態的物件混爲一談 。 若要移除幽靈物件 ， 可直接刪除物件 ， 將其機能直接加入要調用幽靈物件的物件中 ， 加入機能的方式可以透過繼承或是混入 （ mixin ） 的方式 。