我參考GoF 抽象工廠和工廠方法模式。我理解他們的目的,但是讓我感到困惑的是,兩種模式都沒有討論客戶如何獲得「工廠對象」的實例。例如,在下面的抽象工廠模式,討論假定一些其他的框架或驅動程序代碼已經構造的層次結構,並且Application
實例已經持有的GUIFactory
(無論WinFactory
或OSXFactory
)工廠創建工廠?
(源的實例:https://en.wikipedia.org/wiki/Abstract_factory_pattern)
類似的爭論還在繼續朝着工廠方法模式。討論假定外面的其他東西已經實例化MagicMazeGame。
(來源:https://en.wikipedia.org/wiki/Factory_method_pattern)
爲什麼會打擾我?因爲我們需要另外一種模式來構建這些對象層次結構,而這種模式是許多人在說工廠時實際上的意思。基本上工廠模式如下:
這是無論從抽象工廠或工廠方法不同的圖案,在我看來。客戶根據配置和上下文,根據要求以及來指定要求並且工廠創建對象。作爲一個假設示例,客戶端指定它想要抽象Connection
對象,工廠將創建一個MySQLConnection
或OracleConnection
,具體取決於系統中配置的數據庫驅動程序。
所以,我的問題是:
- 是有我所描述的最後一個模式的一個術語? (我試過研究,但工廠一直意味着GoF的工廠模式)
- 創建工廠的工廠應該命名爲什麼?
GUIFactoryFactory
??? - 還是我完全錯了這一切?
我知道這個問題,只是詢問如何命名的東西,但使用通用語言(來源:領域驅動設計,Eric Evans的2003年,我完全同意)也是在軟件工程中非常重要我的想法是。