设计模式--工厂模式

来源:互联网 发布:全知视角和有限视角 编辑:程序博客网 时间:2024/06/14 01:30

工厂方法模式使用的频率非常高,在我们日常的开发中总能见到它的身影。

Define an interface for creating an object,but let subclasses decide which class to
instantiate.Factory Method lets a class defer instantiation to subclasses.(定义一个用于创建对象的
接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。)
这里写图片描述

来看一个比较实用的通用源码

//抽象产品类public abstract class Product {//产品类的公共方法    public void method1(){    //业务逻辑处理    }    //抽象方法    public abstract void method2();}//具体产品类,具体的产品类可以有多个,都继承于抽象产品类public class ConcreteProduct1 extends Product {    public void method2() {    //业务逻辑处理    }}public class ConcreteProduct2 extends Product {    public void method2() {    //业务逻辑处理    }}//抽象工厂类负责定义产品对象的产生public abstract class Creator {/*    * 创建一个产品对象,其输入参数类型可以自行设置    * 通常为String、Enum、Class等,当然也可以为空    */    public abstract <T extends Product> T createProduct(Class<T> c);}//具体如何产生一个产品的对象,是由具体的工厂类实现的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;    }}//场景类的调用方法public class Client {    public static void main(String[] args) {    Creator creator = new ConcreteCreator();    Product product = creator.createProduct(ConcreteProduct1.class);        /*        * 继续业务处理        */    }}

优缺点

优点:
1、扩展性好
2、屏蔽产品类
3、工厂方法模式是典型的解耦框架

原创粉丝点击