2011-07-17 68 views
1

例如,我在這個模塊中爲棱鏡製作了一個模塊,有2個文件夾模型和服務。 在文件夾中我描述了Car類。 現在我想使用工廠創建一個類Car的實例。 問題。如何正確地做到這一點。關於棱鏡4的問題

我想到了兩個變種。

1)創建新文件夾Infrastructure並添加CarFactory類。

2)創建一個服務CarService並使用它創建Car類的一個實例。

回答

0

使用Prism也使用的服務定位器。這通常是Unity或MEF。

+0

在這種情況下,OP實例化時可能需要將參數傳遞給Car類。如果Car類具有依賴關係並且需要實例數據,那麼在沒有建立某種「初始化」模式的情況下直接使用「ServiceLocator」很困難。工廠不會有這個限制。 'IUnityContainer'有能力通過'ParameterOverrides'傳遞參數,但傳遞給容器的引用通常是不被接受的。 –

0

我更喜歡後一種方法。這使我們能夠更好地隔離我們的組件。如果您的ViewModel接受ICarService,您可以輕鬆地嘲笑這一點,並且在測試時,可能會嘲笑您的ICarService實施的任何依賴項。

這很容易理解,這是放置比典型工廠更多邏輯的好地方。例如,我們會把你通常放在Repository上的方法放在那裏。 (保存,獲取等)。