`
xidajiancun
  • 浏览: 456270 次
文章分类
社区版块
存档分类
最新评论

面向接口编程在Java web 三层架构的应用与使用工厂模式解决问题

 
阅读更多

面向接口编程在Java web 三层架构的应用与使用工厂模式解决问题

为什么要面向接口编程:

在应用中,我们一般都是面向接口编程的,这样有利于系统的扩展与移植。就像Java Web中的三层架构:展现层、业务逻辑层、数据持久层一样,上层都是调用下层的接口。因为一旦下层实现改变:比如持久层从数据库操作更换为文件操作,上层因为调用下层的接口而不用更改任何代码,利于系统扩展与移植。

面向接口编程的思路要点:

举一个例子,现在要添加一个用户,数据持久层接口如下所示:

而其两个实现分别如下:

一、数据库实现代码:

二、文件实现类代码如下:

这样业务逻辑层代码如下所示:

面向接口编程的问题

这样如果要使得用户保存从数据库更换为文件,就要修改构造方法中的userInfoDao = new UserInfoDao4SQL();这一行代码,这样就有不符合修改扩展的原则,因为一旦要更改实现,就要更改代码。

面向接口编程问题的解决思路:

具体的做法是将要更改的代码提取到配置文件里,就如同数据库的配置文件,这样就可以直接修改配置文件,而不用修改代码了。这里我们介绍一种方法,叫做工厂模式方法,代码如下:

配置文件InterfaceFactory.xml代码如下:

InterfaceFactory采用dom4j来解析xml文件,然后在getBean()方法中使用反射机制Class.getName()来生成要采用的接口实现类。并且将实现类放在Map中,这样以后要用到就直接从map中取,提高了效率。配置文件采用了数据库实现,如果要采用文件实现则将配置文件转换为:

这样业务逻辑层的代码修改为如下,这样以后就可以不用修改代码写该配置文件即可完成:

分享到:
评论

相关推荐

    java三大框架

    Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。 就是说可将两者一起使用,达到将两者自身的特点进行互补。 spring 框架介绍 : 它关注的领域是其他许多流行的Framework未曾关注的...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    二十三种设计模式【PDF版】

    整个设计模式贯穿一个原理:面对接口编程,而不是面对实现.目标原则是:降低耦合,增强灵活性. 建筑和软件中模式之异同 CSDN 的透明特别推崇《建筑的永恒之道》,认为从中探寻到软件的永恒之道,并就"设计模式"写了专门...

    超级有影响力霸气的Java面试题大全文档

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 20、abstract class和interface有什么区别? ...

    java 面试题 总结

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 17、abstract class和interface有什么区别? 声明方法...

    java面试宝典

    一般用截取ID方法,还有是三层嵌套方法。 47 200、xml有哪些解析技术?区别是什么? 48 201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时如何解决中文问题?如何解析? 48 203、编程用...

    asp.net知识库

    使用microsoft.web.ui.webcontrols的TabStrip与IFame组件,达到页的切换效果 HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web...

    java学习重点

    J2EE 企业级解决方案的开发,基于WEB的开发等,(Java to Enterprise Edition) ; 2、Java的特点: 序号 语言角度 学习角度 1 比C++简单,放弃了对指针的使用; 入门迅速,容易学; 2 目前最好的网络编程语言; 编写...

    XML高级编程

    Web站点的开发者能够学到把自己的站点提高一个层次的技术,而编程者和软件系统程序员能够学到XML如何和他们的系统相配合,以及如何使用它来解决应用程序集成中的问题。 XML应用程序天生就具备分布性而且通常是面向...

    JAVA 范例大全 光盘 资源

    JAVA 范例大全 光盘 资源 书籍目录: 前言. 第1章 开发环境搭建 1 实例1 下载、安装并配置JDK 1 实例2 第一个Java程序 3 实例3 在Eclipse中创建第一个Java程序 4 常见问题 javac不是内部或者外部命令 6 常见...

    Spring面试题

    ☆ Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域...

    java面试题

    答:运行时异常时(JVM)java虚拟机在运行过程中发生的问题,比如:内存溢出等问题。这类异常没法要求程序员去一一捕获并抛出,一般异常是Java类库或程序员自己写的代码发生的错误,这类异常可以由我们去一一捕获并...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    【计算机软件毕业设计】二手车交易平台的分析、设计与实现文献综述1.doc

    [4]简单来说,Spring是一个轻量 的控制反转和面向切面的容器框架,解决了许多在J2EE开发中常见问题的强大开源框架 ,它提供了管理业务对象的一致方法并且鼓励对接口编程而且也是对类编程的良好习惯 。 Spring框架有...

Global site tag (gtag.js) - Google Analytics