目录:
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的实现中,代码少之又少
分享到:
相关推荐
IOC底层使用到的技术包括xml配置文件、dom4j解析xml文件、工厂设计模式、反射等。 五、IOC入门案例 下面是一个简单的IOC入门案例: 1. 导入jar包:首先需要下载Spring框架核心jar包,并将其添加到项目中。 2. ...
BeanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规与实际的应用程序代码分开。 1.2 Spring 上下文 Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 ...
- **工厂模式**:通过BeanFactory和ApplicationContext接口提供的方法,来创建和管理对象实例。 - **代理模式**:在AOP中广泛使用,通过动态代理技术实现切面的加入。 - **装饰者模式**:在某些情况下用于增强已有...
Struts、Hibernate和Spring是Java开发中常用的三个开源框架,它们常常被联合使用,构建出高效、可扩展的Web应用程序。这种技术栈被称为SSH(Struts+Hibernate+Spring)。本课件主要围绕这三个框架,旨在帮助开发者...
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...
在IT行业中,Spring框架是Java开发中的一个基石,它提供了丰富的功能来构建高效、可维护...通过实践这个教程,开发者将能够熟练掌握Spring、Hibernate和JPA的联合使用,为构建现代化的Java Web应用程序打下坚实的基础。
- 抽象工厂模式更进一步,提供创建一系列相关或依赖对象的接口。 - 主要用于避免创建对象时的条件判断。 --- ##### 4. 问答题 **熟悉框架及其详细介绍:** - **Spring框架**: - 基于Java的企业级应用开发...
Hibernate 4 是一个流行的Java持久化框架,用于简化数据库交互,尤其在企业级应用程序中广泛使用。SSH(Struts、Spring、Hibernate)是Java Web开发中的经典三层架构,其中Hibernate负责对象关系映射(ORM)。这个...
- **IOC(Inversion of Control,控制反转)**:Spring通过依赖注入(DI)实现IOC,使得对象不再需要自己创建和查找依赖的对象,而是由Spring容器统一管理对象的生命周期。 - **AOP(Aspect Oriented Programming,...