您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > J2EE架构设计-UML软件工程组织
®www.uml.org.cn关系您的软件工程技术实践J2EE架构设计成湘均北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cn课程安排第一部份:介绍实例架构结合实例讲解Web项目总体结构分析多层结构优点具体讲解每个层次的实现技巧北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cn课程安排第二部分:介绍组织层次关联利器(Spring)快速入门Factory模式IOC模式AOP模式演练Spring的威力北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cn课程安排第三部分:介绍日志管理利器(Log4j)快速入门演练Log4j的优越性北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cn课程安排第四部分:介绍UI层利器(Struts)Struts介绍快速入门ActionFromAction客户端验证北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cn课程安排第五部分:介绍数据持久层利器(HIbernate)快速入门介绍辅助工具表与表之间关联操作多数据库操作事务管理DAO模式与Spring结合使用北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cn课程安排第六部分:介绍软件测试与部署借助Junit的单元测试借助Ant的自动部署北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cn实例架构北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cn层次介绍实例分为四层:通过Struts实现UI层通过Spring实现业务层通过Hibernate实现数据持久层传输于各层的域对象层北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cn结构优点通过成熟的开源产品搭建层次清晰性能稳定的系统架构。层与层之间松散耦合,增加代码重用率,提高开发效率。每一层充当各自具体任务,便于团队分工和后期维护。稳健的架构能承受业务的扩展,不至于使项目失控。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnUILayerUI是UserInterface的缩写,这一层是面向用户的界面,充当与用户互动的角色。即接受用户请求作出响应。实现这一功能最佳经验即MVC模式,实例中该层借助Struts实现,Struts本身就是MVC思想的产物。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnUILayerStruts提供ActionFrom来封装与用户互动的数据元素。Struts提供Action来接受用户请求与发生响应动作。Struts提供ValidatorPlugIn来进行UI验证。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnBusinessLayer具体的业务逻辑通常导致代码的高度耦合,因此我们将业务逻辑分为单独的一层,其目的也是希望通过层,来降低它与系统其他部分的耦合度。该层借助Spring可以达到更好的效果。通过Spring的IOC模式来装配业务组件,如,DAO对象。使系统更具扩展性。通过SpringAOP(面向方面)思想,来集中处理具体业务,如事务管理,使代码更为简洁,增加复用,提高开发效率。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnPersistenceLayer在传统的系统开发中该层占据大部分的开发时间,且随着需求的变更功能的修改,逐渐变得难以控制,特别是表结构的变化可能导致整个系统大动干戈。在实例中我们借助Hibernate,利用其持久化机制和CRUD封装来减少代码开发量和其他层次的耦合度。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnDomainLayer该层应该说是ORM思想的产物,ORM用对象关联数据表,允许数据表中数据放入对象,也允许对象中数据更新到数据表,我们将这些对象的集合归为一个专门的层次即DomainLayer。域对象承担各层之间数据通信的载体。实际上域对象也是一个完完全全的业务对象,如User对象、Book对象。通过对业务的对象化,这有利于业务逻辑的重用。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cn系统结构-回顾将系统进行如上的分成,从理论上可以让其承担各自职责,UI层提供友好的用户交互、业务层处理具体问题领域逻辑、持久层完成于数据库读取存储、域模型承担数据传输的载体。将一个复杂的应用领域细分成诸多最小单元,然后进行串联、组合。使得一个应用领域的实现过程中,最小单元达到最大复用。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-简介springFramework是种非侵入式轻量级框架,允许自由选择和组装各部分功能,也提供了和其他很多软件集成的接口,如与Hibernate、Struts的集成。Spring主要功能有DependencyInjection、SpringContext、SpringAOP、SpringORM、SpringDAO、SpringMVC。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-为什么使用Spring利用延时注入思想组装代码,提高系统扩展性,灵活性,实现插件式编程。利用AOP思想,集中处理业务逻辑,减少重复代码,构建优雅的解决方案。利用HibernateTransactionManager类封装Hibernate事务管理,其是AOP思想的典型运用,使持久层操作代码简洁精悍。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-搭建Web应用环境下载springFramework最新版本,将其下的*.jar拷贝到项目lib中,并引用。在Web.xml中配置spring的启动方式:Listener方式或Servlet方式。设置Spring配置文件。通常在系统运行前完Spring成初始化工作,因此在Web.xml中配置一个初始化Servlet。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-搭建Web应用环境北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-搭建Web应用环境北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-搭建Web应用环境北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-Factory模式在实际开发中会经常用到工厂模式,其完成的功能是使外部调用类不需关心具体实现类,这样非常适合在同一个事物类型具有多种不同实现的情况下使用。要实现工厂模式我们必须设计AbstractFactory类AbstractProduct类,为了实现灵活性还可能用反射机制构建Product实体。在得到具体实现类的时候也必须通过工厂类完成,如图所示:北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-Factory模式北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-依赖注入Spring的依赖注入能达到工厂模式的同样的效果,但其实现却优雅很多。看如下代码:在Spring配置文件中配置Bean实现代码:Producta=XXX.getBean(“Product);这样即得到了ProductA的实例,代码中只硬编码了Product接口。是不是让你兴奋了?北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-依赖注入Spring还允许以下三种方式实现依赖注入:设值注入接口注入构造函数注入北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-依赖注入我们重点讲述设值注入方式,先来看看通过设值注入能给实际开发带来什么好处.下图是不是让你有所领悟?北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-演练我们利用设值注入实现一个简单的计算器,让它实现两个数的加法或减法运算。类图如下:Product实现类中与具体实现类无关联、无依赖,通过外部配置即可自由切换实现类,美妙!北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-演练假设我们要实现两个数相加,则配置如下(如果需要实现两个数相减,则将注释的algorithmBean替换掉当前的即可):北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-演练测试代码如下,根据具体的实现类不同将得到两个数相应运算的结果。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-依赖注入总结从演练的例子可以看出Spring提供的依赖注入思想能让代码之间依赖性降低,转而交给配置文件进行外部配置,这样对于需求变化、后期维护、功能扩展带来便利。Spring是一种工具,更是一种思想,开发人员可以在设计代码时发挥无限想象,挖掘出最适应项目代码组织形式。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-AOP模式AOP的全称为AspectOrientedProgramming,译为“面向方面编程”或“面向切面编程”,与熟悉的OOP(面向对象编程)思想所关注的目标有本质上的区别,AOP是针对具体业务领域、业务逻辑;OOP针对业务对象。Spring中事务管理机制就是AOP的一个具体运用。利用此机制省去了我们在每个具体实现类中去进行事务管理的编码,而将这一切交给Spring提供的事务代理实现类org.springframework.transaction.interceptor.TransactionProxyFactoryBean。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-AOP模式在讲述AOP运用之前我们先来了解下AOP实现原理。Spring的DependencyInjection和AOP都是某一设计模式的经典应用及放大。也许通过Spring的事物管理机制你已经将AOP的实现原理与代理模式联系在一起了。的确如此,让我们先看看代理模式的思想。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-Proxy代理模式的思想是:不让外部直接访问具体目标,而是通过一个代理类才能访问具体目标。类似在具体目标与外部之间放置一道“隔离层“,所有与具体目标的通信均需通过这道”隔离层”来传送请求和返回状态。这样“隔离层“就能掌控访问具体目标的前前后后。如果我们需要在访问具体目标前或后加上一致的处理逻辑,无疑代理模式最为适合。就如事物管理。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-Proxy下面演练用Proxy模式来实现JDBC事务管理,先看类图:先编写Dao接口,让所有访问数据库的类和代理类都继承该接口,然后在代理类中传入要访问的具体类。这样就能通过代理类完成对具体实例的访问。北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-Proxy北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-Proxy北京火龙果软件工程技术中心|UML软件工程组织www.uml.org.cnSpring-Proxy从DaoImpl类中代码可以看出我们没有编写事务的控制代码,而是转交给代理类完成,这样访问数据库的具体类不需要自己关心事务处理。让某一业务逻辑集中实现,能避免重复编写代码,方便修改和维护。上面的例子有两个缺陷1.
本文标题:J2EE架构设计-UML软件工程组织
链接地址:https://www.777doc.com/doc-140906 .html