我第一次嘗試使用工廠方法。似乎有兩種方法可以做到這一點,我不確定何時使用哪種方法(或者如果其中一種方法錯誤?)。工廠模式問題
1)創建具有由子類覆蓋的方法的抽象類:
public abstract class EmployeeCreator
{
public abstract Employee FactoryMethod();
}
public class DeveloperCreator : EmployeeCreator
{
public override Employee FactoryMethod()
{
return new Developer();
}
}
2)在它創建具有一個工廠方法的類:
public class EmployeeFactory
{
public static Employee CreateEmployee(EmployeeType type)
{
if (type == EmployeeType.Developer)
return new Developer();
else
return new Secretary();
}
}
好像在我的案例#2將會變得更容易,因爲我不需要創建所有這些「創建者」子類,除了返回正確類型的員工之外,這些子類實際上並沒有多大作用。
但它仍在使用工廠模式?
100%同意,對於你的情況,你應該去案例二。 – 2011-03-22 16:01:40
根據Head First Design Patterns書籍,第一個不是第一個簡單工廠的例子,第二個是工廠?抽象工廠是針對產品系列的,不是? – Joe 2011-03-24 12:55:37
@Joe,在你的第一個例子中,這個家庭只有一個成員,就是這樣。恕我直言,這不值得一個單獨的名稱。你仍然有抽象的基類/接口和單獨的具體工廠子類,這就是模式的主要觀點。 – 2011-03-24 13:37:56