核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
例子:请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 }