1. 程式人生 > 其它 >設計模式 -> 建立型 - 工廠方法(Factory Method)

設計模式 -> 建立型 - 工廠方法(Factory Method)

本文主要分析設計模式 - 工廠方法(Factory Method),它定義了一個建立物件的介面,但由子類決定要例項化哪個類。工廠方法把例項化操作推遲到子類

1. 意圖

定義了一個建立物件的介面,但由子類決定要例項化哪個類。工廠方法把例項化操作推遲到子類。

2. 類圖

在簡單工廠中,建立物件的是另一個類,而在工廠方法中,是由子類來建立物件。 下圖中,Factory 有一個 doSomething() 方法,這個方法需要用到一個產品物件,這個產品物件由 factoryMethod() 方法建立。該方法是抽象的,需要由子類去實現。

3. 實現

public abstract class Factory {
    abstract public Product factoryMethod();
    public void doSomething() {
        Product product = factoryMethod();
        // do something with the product
    }
}
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();
    }
}