定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
一个通用栗子如下:
1 //抽象产品类 2 public abstract class Product{ 3 public void method1(){} 4 public void method2(){} 5 } 6 //具体产品类 7 public class ConcreateProduct1 extends Product{ 8 public void method1(){} 9 } 10 public class ConcreateProduct2 extends Product{ 11 public void method2(){} 12 } 13 //抽象工厂类 14 public abstract class Creator{ 15 //创建一个产品对象,其输入参数类型可以自行设置 16 //可以为String,Enum,Class等 也可以为空 17 public abstract <T extends Product> T createProduct(Class<T> c); 18 } 19 //由具体工厂类产生具体的产品对象 20 public class ConcreateCreator extends Creator{ 21 public <T extends Product> T createProduct(Class<T> c){ 22 Product product = null; 23 try{ 24 product = (Product)Class.forName(c.getName()).newInstance(); 25 }catch(Exception e){ 26 //异常处理 27 } 28 return (T)product; 29 } 30 //场景调用方法 31 public class Client{ 32 public static void main(String[] args){ 33 Creator creator = new ConcreateCreactor(); 34 Product product = creator.createProduct(ConcreateProduct1 .class); 35 } 36 }
上述只是一个简单示例,根据需要可自由扩展,工厂模式有以下优点:
原文:https://www.cnblogs.com/loveBolin/p/9678318.html