设计模式之二 工厂模式
工厂模式的定义:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法决定一个类的实例化延迟到其子类。
类图如下:
通用的代码如下:
//抽象产品类 public abstract class Product { // 产品通用的方法..... public void method1(){ } //抽象方法 public abstract void method2(); } //--------------------------------------产品类------------------------------------------------ //具体类 1 public class ConcreteProduct1 extends Product { @Override public void method2() { // 处理具体产品1的方法 } } //具体产品类2 public class ConcreteProduct2 extends Product { @Override public void method2() { //具体产品2的方法..... } } //-----------------------------------创建类------------------------------------------ //抽象的创建类 public abstract class Creator { //通过反射创建具体的产品类... public abstract <T extends Product> T createProduct(Class<T> c); } //具体的抽象类 public class ConcreteCreator extends Creator { @Override public <T extends Product> T createProduct(Class<T> c) { //产品类.... Product product = null; if(product == null){ try { product = (Product) Class.forName(c.getName()).newInstance(); } catch (Exception e) { e.printStackTrace(); } } //返回..... return (T)product; } } //---------------------------------------------------------Client 类-------------------------------------------------------------------------- public class Client { /** * @Title: main * @Description: 工厂类的Client * @param @param args 设定文件 * @return void 返回类型 * @throws */ public static void main(String[] args) { //工厂创建类 Creator creator = new ConcreteCreator(); //生成具体产品类1 Product product = creator.createProduct(ConcreteProduct1.class); //继续业务处理 } }
简单工厂类
把类图去掉抽象类 creator类,将ConcreteCreator 方法修改为静态即可。