先来简单说一下什么是工厂模式和笼统工厂模式:
产品接口:
package com.wangjun.designPattern.factory;public interface IProduct { public String info(); }
产品实现类:
package com.wangjun.designPattern.factory;public class Product1 implements IProduct { @Override public String info() { return "Product1"; }}
其他4个Product类一样,就不写了。
工厂类:
package com.wangjun.designPattern.factory;public class ProductFactory { public static IProduct createProduct(int type) { switch(type) { case 1: return new Product1(); case 2: return new Product2(); case 3: return new Product3(); case 4: return new Product4(); case 5: return new Product5(); default: System.out.println("没有此型号的产品"); return null; } }}
测试类:
package com.wangjun.designPattern.factory;public class Main { public static void main(String[] args) { //根据传入的参数来创立具体的类 IProduct product1 = ProductFactory.createProduct(1); System.out.println("产品名:" + product1.info()); IProduct product2 = ProductFactory.createProduct(2); System.out.println("产品名:" + product2.info()); IProduct product3 = ProductFactory.createProduct(3); System.out.println("产品名:" + product3.info()); }}
运行结果:
产品名:Product1产品名:Product2产品名:Product3
工厂接口:
package com.wangjun.designPattern.abstractFactory;public interface IFactory { public IProduct createProduct(int type);}
工厂实现类:
package com.wangjun.designPattern.abstractFactory;public class Factory1 implements IFactory { @Override public IProduct createProduct(int type) { System.out.println("工厂1生产"); if(type == 1) { return new Product1(); }else if(type == 2) { return new Product2(); }else { System.out.println("不支持此类型的产品"); } return null; }}
工程2,3一样,就不写了。
产品接口:
package com.wangjun.designPattern.abstractFactory;public interface IProduct { public String info(); }
产品实现类:
package com.wangjun.designPattern.abstractFactory;public class Product1 implements IProduct { @Override public String info() { return "Product1"; }}
产品实现类2,3,4,5,6一样就不写了。
提供给外部调用的工程类:
package com.wangjun.designPattern.abstractFactory;public class ProductFactory { public static IProduct createProduct(int type) { IFactory factory = null; //1,2类型使用工厂1生成;3,4类型使用工厂2生产;5,6类型使用工厂3生产 if(type >= 1 && type <= 2) { factory = new Factory1(); }else if(type >=3 && type <= 4) { factory = new Factory2(); }else if(type >= 5 && type <= 6) { factory = new Factory3(); }else { System.out.println("不支持此类型的产品"); return null; } IProduct product = factory.createProduct(type); return product; }}
测试类:
package com.wangjun.designPattern.abstractFactory;public class Main { public static void main(String[] args) { IProduct product1 = ProductFactory.createProduct(1); System.out.println("产品名:" + product1.info()); IProduct product2 = ProductFactory.createProduct(4); System.out.println("产品名:" + product2.info()); IProduct product3 = ProductFactory.createProduct(5); System.out.println("产品名:" + product3.info()); }}
打印输出:
工厂1生产产品名:Product1工厂2生产产品名:Product4工厂3生产产品名:Product5