版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34272093/article/details/86502098
一家产品公司,按照客户要求需要生产产品a,b,c三类产品
创建一个产品抽象类,抽象方法由具体产品类去实现
public abstract class Product { //产品的抽象类 //由具体产品类去实现 public abstract void createProdut(); }
产品A
public class A extends Product { @Override public void createProdut() { Log.d("A","createProduct A success"); } }
创建抽象工厂
public abstract class ProductFactory { //抽象工厂方法 //具体生产什么由具体工厂去实现 public abstract <T extends Product> T createProduct(Class<T> cls); }
具体工厂
public class ProductionFactory extends ProductFactory { @Override public <T extends Product> T createProduct(Class<T> cls) { Product product = null; try { product = (Product) Class.forName(cls.getName()).newInstance(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return (T) product; } }
客户
ProductionFactory factory = new ProductionFactory(); A a = factory.createProduct(A.class); a.createProdut();