2014-06-12 19 views
1

您對這個概念有什麼看法:
項目中存在許多類,其中一些類是單例,並且希望在整個代碼庫中共享。包括每個必需的頭文件和在子類中創建專用的指針調用可能是一件麻煩事。這個想法:有一個所謂的「過境物體」,它帶有指向實際實例和耗材獲得者的指針/引用。
運輸對象集中實例

class TransitObject 
{ 
    private: 
     MyGarden& garden; 
     MyApple& apple; 
     MyFountain& fountain; 
    public: 
     TransitObject(MyGarden& G, MyApple& A, MyFountain& F) : garden(G), apple(A), fountain(F) {} 
     MyApple& GetApple() { return apple; } 
     MyGarden& GetGarden() { return garden; } 
     MyFountain& GetFountain() { return fountain; } 
}; 

class WoodShack 
{ 
    public: 
     WoodShack(TransitObject& t) { t.GetApple().whatever(); } 
}; 

您認爲這是一個優勢嗎?我喜歡它,因爲它使攜帶單身人士非常容易。添加新實例非常簡單,不會讓程序員感到困惑。請注意,代碼只是一個例子,當然可以進行優化(常量,析構函數等...)

回答

0

看起來您正在嘗試重新創建輪子。您所呈現的內容與builder design pattern非常相似,您甚至可以在網絡上找到一個C++示例(herehere)。

+0

我不是模式名稱的忠實粉絲,但它可能與構建模式有相似之處。基本上我正在檢查這個概念是否合理。 – clambake