-1
當我覺得有在我的項目一個工廠類的需要,我很想用這個辦法:正確使用抽象工廠的
public class ProductFactory {
public Product makeProduct(Type t){
switch (t) {
case A: return new ProductA(); break;
case B: return new ProductB(); break;
default: throw new UnsupportedTypeException();
}
return null;
}
}
凡產品選擇的邏輯封裝工廠內目的。
對於抽象工廠模式,取而代之的是,從我所瞭解到的方法來看,也是抽象工廠,並根據產品選擇邏輯對其進行實例化。
public class ProductFactoryFactory {
public ProductFactory getProductFactory(Type t){
switch (t) {
case A: return new ProductFactoryA(); break;
case B: return new ProductFactoryB(); break;
default: throw new UnsupportedTypeException();
}
return null;
}
}
在每次添加一個新的產品兩種情況下,交換機需要以包括新創建的產品的地方改變。
我的問題是如果我用我的方法失去了一些東西,取而代之的是使用抽象工廠的優點。
這不會編譯,你有一個'return'和'break'。你錯過的是DI! – 2014-12-06 15:26:34
這個問題似乎是題外話題,因爲它不是一個具體問題,而是關於設計模式的一般問題。因此它屬於程序員SE。 – 2014-12-06 15:29:27
@BoristheSpider謝謝你,我糾正了代碼。爲了簡單起見,我省略了依賴關係。你能否更好地解釋依賴注入與如何相關? – DanTheMan 2014-12-06 15:41:05