定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到子类。
区别:与Simple Factory的区别:将类的实例化延迟到子类。
适用的情况:
1、如果一个类要创建某个接口的对象,但又不知道具体的实现。
2、如果一个类本身希望由他的子类来创建所需的对象的时候。
体现了”依赖倒置的原则“(要依赖抽象,不要依赖于具体的类)。
1 package com.design; 2 3 public interface exportApi { 4 public boolean export(String data); 5 }
1 package com.design; 2 3 public class exportTextFile implements exportApi { 4 5 public boolean export(String data){ 6 // TODO Auto-generated method stub 7 System.out.println(data); 8 return true; 9 } 10 11 }
1 package com.design; 2 3 public class exportDB implements exportApi { 4 5 public boolean export(String data){ 6 // TODO Auto-generated method stub 7 System.out.println(data); 8 return false; 9 } 10 11 }
1 package com.design; 2 3 public abstract class factory { 4 public boolean export(String data){ 5 exportApi api=factorymethod(); 6 return api.export(data); 7 } 8 9 protected abstract exportApi _factorymethod(); 10 }
1 package com.design; 2 3 public class factorymethod extends factory{ 4 protected exportTextFile _factorymethod(){ 5 return new exportTextFile(); 6 } 7 }
1 package com.design; 2 3 public class client { 4 public static void main(String[] args){ 5 exportOperate operate=new factorymethod(); 6 7 operate.export("sdf"); 8 } 9 }
浙公网安备 33010602011771号