2013-02-27 16 views
0

我有以下健康俱樂部的場景(用C++編寫BTW):單個或多個抽象工廠用於在繼承層次結構中創建對象?

 UML Diagram

我要創建隨機客戶和培訓師的對象(所以這兩個國家都隨機生成的名稱,但客人也具有隨機健康數據)。

我希望能夠製造出許多不同複雜度的隨機生成器。

很明顯,兩者都需要隨機的forename/surname生成器功能 - 但我不確定如何將這些代碼保存在一個地方。

我可以有一個所有生成方法(例如,generateForename())的抽象工廠,所有需要隨機生成的對象都可以使用。但是,培訓師是否應該訪問可以生成健康數據的工廠,即使這與它們無關?

我還考慮過爲每個班級設立一個抽象工廠 - 一個用於一個人,一個用於客戶,一個用於訪客,並且有對象通過將合適的工廠傳給他們來生成超類,但這聽起來過於複雜。

我對此很新,所以原諒我,如果我的設計有點偏離。

你們有什麼建議?

+0

抽象工廠是一個抽象類的家庭,所以也許一個就足夠了。請參閱:http://en.wikipedia.org/wiki/Abstract_factory_pattern – 2013-02-27 23:29:33

回答

1

我不確定抽象工廠是你在找什麼。當您擁有相同的基類時,抽象工廠效果最佳,但您需要創建不同的具體實例。雖然你有Person的根類,但實際上你需要創建兩個不同基類的派生類。

我會努力保持生成數據的方法與包含該數據的類一起。這樣它可以重複使用。

您是否可以在Guest和Trainer上創建工廠方法,然後才能夠使用各自基類中的方法生成數據?也許創建測試特定的子類來保持測試的東西遠離真實的東西?