設計模式-工廠方法(Factory Method)
阿新 • • 發佈:2020-08-10
基本來源於 [CyC2018-設計模式]([https://github.com/CyC2018/CS-Notes/blob/master/notes/設計模式 - 目錄.md](https://github.com/CyC2018/CS-Notes/blob/master/notes/設計模式 - 目錄.md))
目錄
意圖(Intent)
定義了一個建立物件的介面,但由子類決定要例項化哪個類。工廠方法把例項化操作推遲到子類。
類圖(Class Diagram)
在簡單工廠中,建立物件的是另一個類,而在工廠方法中,是由子類來建立物件。
下圖中,Factory 有一個 doSomething() 方法,這個方法需要用到一個產品物件,這個產品物件由 factoryMethod() 方法建立。該方法是抽象的,需要由子類去實現。
實現(Implementation)
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(); } }