工厂方法模式
在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的。我们来看一个比较实用的通用源码。
Define an interface for creating an object,but let subclasses decide which class to instantiate.
Factory Method lets a class defer instantiation tosubclasses.(定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。)
package yz.factory; public abstract class Product { // 抽象方法 public abstract void method2(); // 产品类的公共方法 public void method1() { // 业务逻辑处理 } }
package yz.factory; public class ConcreteProduct1 extends Product { public void method2() { } }
package yz.factory; public class ConcreteProduct2 extends Product { public void method2() { // 业务逻辑处理 } }
package yz.factory; public abstract class Creator { /** * 创建一个产品对象,其输入参数类型可以自行设置*通常为String、Enum、Class等,当然也可以为空 */ public abstract <T extends Product> T createProduct(Class<T> c); }
package yz.factory; public class ConcreteCreator extends Creator{ public<T extends Product>T createProduct(Class<T> c){ Product product=null; try{ product=(Product)Class.forName(c.getName()).newInstance(); }catch(Exception e){ //异常处理 } return (T)product; } }
package yz.factory; //场景类的调用方法 public class Client { public static void main(String[] args) { Creator creator = new ConcreteCreator(); Product product = creator.createProduct(ConcreteProduct1.class); // 继续业务处理 } }
本文固定链接:http://www.yizhi227.com/?post=59
本文由Jessie原创或编辑,互联分享,尊重版权,转载请以链接形式标明本文地址
本文由Jessie原创或编辑,互联分享,尊重版权,转载请以链接形式标明本文地址