`
Andy.lIU
  • 浏览: 21116 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring IOC和工厂模式联合使用简化工厂模式

阅读更多

目录:

1:应用场景

2:传统工厂模式

3:传统工厂模式实现1中应用场景的弊端

4:IOC和工厂模式连合使用实现1中描述的场景


1:应用场景

    在MYPM的工作流业务中,有三种业务对像可以走工作流,分别为:文档,项目和工作任务;这三种业务对像在走工作流时,具体处理业务是有差别的,工作流引擎要根据不同的业务对像(文档,项目和工作任务),调用不同的处理器.

2:传统工厂模式

(1)简单工厂模式

用法:客户端利用SimpleFactory产生一个具体产品(用AbstractProduct引用),当然这需要客户端传参,但判断逻辑位于SimpleFactory中(如switch语句)。

扩展:若需要增加具体产品E,则须添加ConcreteProductE类,同时修改SimpleFactory。

修改:若需要修改具体产品A,则只需修改ConcreteProductA类。

(2)工厂方法模式

用法:客户端根据需要的产品选择工厂(实例化具体工厂A,用AbstractFactory引用),再用该工厂制造产品(用AbstractProduct引用)。

扩展:若需要增加具体产品E,则须添加ConcreteProductE类和ConcreteFactoryE。

修改:直接修改相应产品。

(3)抽象方法模式

用法:客户端根据需要的产品选择工厂(实例化具体工厂A,用AbstractFactory引用),再用该工厂制造产品(用AbstractProduct引用)。相比而言,抽象工厂模式的好处是易于转换产品的系列(如由A系列转换为B系列)。

扩展:若需要增加产品3A和3B,则除了要增加3个类外还要修改FactoryA和FactoryB。若需要增加产品系列C,除了增加相应的类外,还要增加FactoryC类。

修改:直接修改相应的类。

3:传统工厂模式实现1中应用场景的弊端

应用场景

  在MYPM的工作流业务中,有三种业务对像可以走工作流,分别为:文档,项目和工作任务;这三种业务对像在走工作流时,具体处理业务是有差别的,工作流引擎要根据不同的业务对像(文档,项目和工作任务),调用不同的处理器.


    在1中所描述场景,用简单工厂模式实现代码中会有很多if else 或是switch语句;用工厂方法模式或抽象方法模式实现时,会增加类。且看下面IOC和工厂模式连合使用后三种工厂模式(简单工厂模式、工厂方法模式、 抽象方法模式)合并成简单工厂模式使用且代码中无任何if else 或是switch语句

4:IOC和工厂模式连合使用业实现1中描述的场景

     思路其实很简单:

    在工厂中持有一map(通过IOC注入),key 为简单工厂中要传入的参数,value为实现了处理器接口   WorkFlowTaskHandler的具体实现。取出具体的“产品”,即场景中的处理器

  在工作流引擎中中调用方式如下

//getHanerByTask 方法中传入要处理的工作流任务类型

WorkFlowTaskHandler handler = taskHandlerFactory.getHanerByTask(dto.getTask().getTaskType());

//handleWfTask为处理器接口WorkFlowTaskHandler中定义的接口

handler.handleWfTask(dto);

下面请看具体实现

4.1 先看IOC配置,如下图所示taskHandlerFactory中持有workFlowHanderHold,workFlowHanderHold就是一个map

workFlowHanderHold中注入了 三个处理器,如有必要还可以继续注入实现了WorkFlowTaskHandler接口的任意类

    4.2 工厂类,所下两图所示,TaskHandlerFactoryImpl的实现中,代码少之又少

分享到:
评论

相关推荐

    J2EE高级开发框架.pdf

    IOC底层使用到的技术包括xml配置文件、dom4j解析xml文件、工厂设计模式、反射等。 五、IOC入门案例 下面是一个简单的IOC入门案例: 1. 导入jar包:首先需要下载Spring框架核心jar包,并将其添加到项目中。 2. ...

    六大类系统架构图及其简介.doc

    BeanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规与实际的应用程序代码分开。 1.2 Spring 上下文 Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 ...

    Struts、Hibernate、Spring经典面试题收藏

    - **工厂模式**:通过BeanFactory和ApplicationContext接口提供的方法,来创建和管理对象实例。 - **代理模式**:在AOP中广泛使用,通过动态代理技术实现切面的加入。 - **装饰者模式**:在某些情况下用于增强已有...

    Struts+Hibernate+pring课件

    Struts、Hibernate和Spring是Java开发中常用的三个开源框架,它们常常被联合使用,构建出高效、可扩展的Web应用程序。这种技术栈被称为SSH(Struts+Hibernate+Spring)。本课件主要围绕这三个框架,旨在帮助开发者...

    springmybatis

    其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...

    JPASpringSpringMVC01:整合

    在IT行业中,Spring框架是Java开发中的一个基石,它提供了丰富的功能来构建高效、可维护...通过实践这个教程,开发者将能够熟练掌握Spring、Hibernate和JPA的联合使用,为构建现代化的Java Web应用程序打下坚实的基础。

    Java 亚信上海 面试题

    - 抽象工厂模式更进一步,提供创建一系列相关或依赖对象的接口。 - 主要用于避免创建对象时的条件判断。 --- ##### 4. 问答题 **熟悉框架及其详细介绍:** - **Spring框架**: - 基于Java的企业级应用开发...

    hibernate4 全部jar包

    Hibernate 4 是一个流行的Java持久化框架,用于简化数据库交互,尤其在企业级应用程序中广泛使用。SSH(Struts、Spring、Hibernate)是Java Web开发中的经典三层架构,其中Hibernate负责对象关系映射(ORM)。这个...

    框架面试笔试问答题.docx

    - **IOC(Inversion of Control,控制反转)**:Spring通过依赖注入(DI)实现IOC,使得对象不再需要自己创建和查找依赖的对象,而是由Spring容器统一管理对象的生命周期。 - **AOP(Aspect Oriented Programming,...

Global site tag (gtag.js) - Google Analytics