核心工廠類不再負責所有產品的建立,而是將具體建立的工作交給子類去做,成為一個抽象工廠角色,僅負責給出具體工廠類必須實現的介面,而不接觸哪一個產品類應當被執行個體化這種細節。
例子:請MM去麥當勞吃漢堡,不同的MM有不同的口味,要每個都記住是一件煩人的事情,我一般採用Factory Method模式,帶著MM到服務員那兒,說“要一個漢堡”,具體要什麼樣的漢堡呢,讓MM直接跟服務員說就行了。
1 interface Sample{
2 public void say();
3 }
4
5 class SampleA implements Sample{
6 public void say(){
7 System.out.println("SampleA");
8 }
9 }
10
11 class SampleB implements Sample{
12 public void say(){
13 System.out.println("SampleB");
14 }
15 }
16 abstract class Factory{
17 public abstract Sample create();
18 }
19
20 class FactoryA extends Factory{
21 public Sample create(){
22 return new SampleA();
23 }
24 }
25
26 class FactoryB extends Factory{
27 public Sample create(){
28 return new SampleB();
29 }
30 }
31
32 public class Test {
33 public static void main(String[] args) {
34 Factory factoryA =new FactoryA();
35 Sample test1=factoryA.create();
36 test1.say();
37 Factory factoryB=new FactoryB();
38 Sample test2=factoryB.create();
39 test2.say();
40 }
41 }