本文共 1721 字,大约阅读时间需要 5 分钟。
工厂方法模式一般定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
在工厂方法模式中,抽象产品类Product
负责定义产品的共性,实现对事物最抽象的定义;Creator
为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator
完成的。
抽象产品类:
package com.sigalhu.factorymethod;public abstract class Product { //产品类的公共方法 public void method1(){ //业务逻辑处理 } //抽象方法 public abstract void method2();}
具体产品类:
package com.sigalhu.factorymethod;public class ConcreteProduct1 extends Product { @Override public void method2() { //业务逻辑处理 }}
package com.sigalhu.factorymethod;public class ConcreteProduct2 extends Product { @Override public void method2() { //业务逻辑处理 }}
抽象工厂类:
package com.sigalhu.factorymethod;public abstract class Creator { //创建一个产品对象,其输入参数类型可以自行设置 public abstractT createProduct(Class c);}
具体工厂类:
package com.sigalhu.factorymethod;public class ConcreateCreator extends Creator { @Override publicT createProduct(Class c) { Product product = null; try{ product = (Product)Class.forName(c.getName()).newInstance(); }catch (Exception e){ //异常处理 } return (T)product; }}
场景类:
package com.sigalhu.factorymethod;public class Client { public static void main(String[] args){ Creator creator = new ConcreateCreator(); Product product = creator.createProduct(ConcreteProduct1.class); //继续业务处理 }}