概念
定義了一個建立物件的介面,但由子類決定要例項化哪個類,工廠方法把例項化推遲到子類。
類圖
在簡單工廠中,建立物件的是另一個類,而在工廠方法中,是由子類來建立物件。 下圖中,Factory有一個doSomething()方法,這個方法需要用到一組產品物件,這組產品物件由factoryMethod()方法建立,該方法是抽象的,需要由子類去實現。
實現
public abstract class Factory{
abstract public Product factoryMethod();
public void doSomething(){
Product product = factoryMethod();
}
}
複製程式碼
public class ConcreteFactory extends Factory{
public Product factoryMethod(){
return new ConcreteProduct();
}
}
複製程式碼
public class ConcreteFactory1 extends Factory{
public Product factoryMethod(){
return new ConcreteProduct1();
}
}
複製程式碼
public class ConcreteFactory2 extends Factory{
public Product factoryMethod(){
return new ConcreteProduct2();
}
}
複製程式碼