`
programlv
  • 浏览: 6068 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

工厂模式在Struts中的使用 ModuleConfig

阅读更多
//接口
interface ModuleConfig{

  //一些getter setter find方法 对DataSource MessageResource ActionMapping等资源文件进行操作
}


//就是 具体产品类
class ModuleConfigImpl implements ModuleConfig{

    //用于产生一个默认的ModuleConfig对象
	public ModuleConfigImpl(String prefix){
		//初始化默认的资源类型  大部分为null,一些指定了基本类型
	}

    /**Struts_config.xml中的<action-mapping>配置项*/
    protected  HashMap forwards;
    protected  HashMap messageResources;

    //省略其他的一些属性
}


//工厂类
abstract class ModuleConfigFactory{

	//创建产品
	abstract ModuleConfig createModuleConfig(String prefix);

	//获得工厂类对象
	ModuleConfigFactory getModuleConfigFactory(String prefix){
		//返回DefaultModuleConfigFactory对象
		return new DefaultModuleConfigFactory(prefix);
	}
}

//工厂类的默认实现
class DefaultModuleConfigFactory extends ModuleConfigFactory{
	
	//实现抽象方法
	ModuleConfig createModuleConfig(String prefix){
		return new ModuleConfigImpl(prefix);
	}

}

/**调用方法ActionServlet类中的init()方法:*/

//实例工厂类
ModuleConfigFactory moduleConfigFactory=ModuleConfigFactory.createModuleConfigFactory();

//获得产品
ModuleConfig moduleConfig=oduleConfigFactory.createModuleConfig(prefix);



 

Sturts使用工厂类创造了ModuleConfig对象,其实还是使用了面向接口编程的方法,利用接口来动态的指定其子类,便于扩展

分享到:
评论
1 楼 programlv 2010-10-30  
http://dl.iteye.com/topics/download/e9312e7c-ae49-4cf2-9d4c-1f5f5221839a

相关推荐

    struts1.2源码研究

    在初始化过程中,`configDigester`使用SAX解析技术解析这些配置文件,生成ModuleConfig对象。每个ModuleConfig对象封装了一个模块的配置信息,包括Action映射、数据源、消息资源等。配置文件中的`...

    ModuleConfig.zip

    这个文件通常包含了常量定义、结构体、枚举类型、函数原型和其他声明,这些内容都是为了帮助开发人员在项目中使用`ch9121`网络配置协议。在`ModuleConfig.h`中,我们可能会找到如下内容: 1. **常量定义**:定义与`...

    struts-1.3.9 源码

    Struts 1.3.9是在2008年发布的,它提供了许多增强和修复了之前版本中的问题,以提高框架的稳定性和安全性。 首先,我们来看看`LICENSE.txt`和`NOTICE.txt`这两个文件。`LICENSE.txt`通常包含了软件的许可协议信息,...

    struts-1.2.9-src源码类库

    在本压缩包"struts-1.2.9-src"中,包含的是Struts 1.2.9版本的源代码,这对于开发者深入理解Struts的工作原理、调试问题或者进行二次开发非常有帮助。 Struts框架的核心组件包括Action、ActionForm、ActionServlet...

    Struts1源码解析

    4. `initModuleConfig()`方法将`struts-config.xml`中的配置项初始化后放入`moduleConfig`对象,以提高访问速度,因为`moduleConfig`存储在内存中,读取速度远超硬盘。 5. 插件初始化,Struts1支持插件机制,增强了...

    servlet+struts源码

    通过研究这些源码,开发者可以更好地理解MVC模式在Struts中的实现,以及它如何与Servlet容器(如Tomcat)协作。同时,这也为自定义行为、优化性能或者解决已知问题提供了可能。例如,你可以查看`RequestProcessor`...

    精通struts

    在`web.xml`中声明这些标签库,以便在JSP页面中使用。 **struts-config.xml配置** `struts-config.xml`是Struts应用的主要配置文件,它定义了Action、ActionForm、Forward等关键组件。 1. **配置ActionForm**: `...

    struts源码解析

    7. **FastHashMap**: FastHashMap是Struts中一个优化过的哈希映射实现,比Java内置的HashMap更快。它用于存储和查找配置信息、ActionMapping等,提供高效的键值对存储和检索。 通过阅读和理解Struts的源码,开发者...

    Struts知识汇总.doc

    Struts 1.1 是一个基于MVC(模型-视图-控制器)模式的Web应用程序框架,它在Model 2架构的...理解并掌握Struts 1.1的这些核心概念和工作机制,对于任何想要在Java Web开发中使用Struts框架的人来说,都是至关重要的。

    struts和hibernate整合的一种方式

    6. **使用SessionFactory**:在Struts的动作类中,可以通过`ActionServlet`或`ServletActionContext`获取到SessionFactory,然后创建Session进行数据库操作。 7. **事务管理**:由于Struts是请求驱动的,因此需要...

    Struts配置文件详解

    在`struts-config.xml`中,Action配置使用`&lt;action&gt;`元素,它包含`path`属性定义请求路径,`type`属性指定Action类,`parameter`属性用于指定提交的请求参数,`forward`元素定义了Action执行成功后的转发路径。...

    struts的入门学习

    Struts1.x 版本是其早期版本,尽管现在已经被Struts2取代,但在许多遗留系统中仍然广泛使用。 入门学习Struts1.x,首先要做的就是下载Struts框架。你可以从Apache官方网站获取Struts的主页,并找到相应的下载页面。...

    Struts源代码阅读.CHM

    Struts 初始化 initInternal()方法: initOther()方法 initServlet()方法 getServletContext().setAttribute(Globals.ACTION_SERVLET_KEY, this) ModuleConfig moduleConfig = ...

    struts1.x面试题大全.pdf

    1. 控制器进行初始化工作,读取配置文件,为不同的 Struts 模块初始化相应的 ModuleConfig 对象。 2. 控制器接收 Http 请求,并从 ActionConfig 中找出对应于该请求的 Action 子类,如果没有对应的 Action,控制器...

    busybox:在我的仓库中共享moduleconfig

    忙箱 我的仓库中共享模块/配置 共享的配置包括:

    Structs多模块的配置方法.doc

    1. **修改web.xml**:在web.xml中,你需要为每个模块定义一个filter-mapping,每个mapping对应一个Struts的FilterDispatcher实例,并指定相应的`moduleConfig`参数,指向该模块的配置文件。 2. **创建自定义...

    modelmapper-module-java8:Java8的ModelMapper模块

    // using String patternsJsr310ModuleConfig config = Jsr310ModuleConfig . builder() .dateTimePattern( " yyyy-MM-dd HH:mm:ss " ) // default is yyyy-MM-dd HH:mm:ss .datePattern( " yyyy-MM-dd " ) // ...

    998507896765240CH9121配置通讯协议.rar

    这是一个头文件,通常在C或C++编程中使用,包含了模块配置的常量定义、函数原型和结构体声明等。在这个上下文中,它很可能是用来配置CH9121模块的参数,如波特率、校验位、数据位、停止位以及通信模式(如SPI、I2C或...

    react-native-code-push集成android篇.docx

    React Native 集成 CodePush 热更新 android 篇主要讲述了如何在 React Native 中集成 CodePush 热更新,以便更好地管理应用程序的更新和维护。下面将详细介绍 CodePush 的注册、集成和使用过程。 一、CodePush ...

Global site tag (gtag.js) - Google Analytics