3.3.3通信图
用例图及其规约是系统的静态分析,通信图显示了对象之间的协作,是系统的动态描述。图3-1以采购子模块的通信图为例,描述了学生用户使用系统进行采购的过程:学生进入采购界面,计算好原料需求,先进行原料入库操作,再下原料订单,采购完成,更新数据库信息。
图3-2 学生采购模块通信图
4 系统设计
4.1 开发模式及框架
4.1.1 所涉及的开发模式
4.1.1.1 MVC模式
1.模式概念
MVC是Model-View_Controller的简称,即模型-视图-控制器。MVC是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛使用,最近几年被推荐为Sun公司的J2EE平台的设计模式。
2.本系统中的应用
本系统采用了Struts实现了MVC,如图4-1。
图4-1 Struts实现的MVC框架图
4.1.1.2 DAO模式
1.模式概念
很多的J2EE应用程序需要使用持久性数据(数据库、文件等)。不同的程序,持久性存储是各不相同的,并且来访问这些不同的持久性存储机制的API也有很大的不同,如果应用程序要在不同的持久性存储间迁移,这些访问特定持久存储层的代码将面临重写。DAO模式就是为了解决这个问题产生的。
2.本系统中的应用
本系统中的DAO模式的运用是与面向对象接口分离等原则相结合,来实现对数据库操作的封装。具体方法是先写一个操作数据库的DAO接口,再写一个DAO接口的实现类,在服务层的业务处理类中只需实例化这个实现类,即可完成对数据库的操作。
这样的好处是显而易见的,首先封装对数据库的操作有利于提高系统的安全性,其次提高了系统的可扩展性,再次减少了程序的代码量,并且实现了模块功能的单一性,有利于提高系统的可文护性和健壮性。
4.1.1.3 依赖注入模式
1.模式概念
依赖注入模式主要是为了根据需要延缓接口的实现。有个比喻:接口如同空的模型套,在必要时,需要向模型套注射石膏,这样才能成为一个模型实体,因此,对于这些新生的容器,它们反转的是“如何定位插件的具体实现”。因此, Martin Fowler 给这种模式起了一个形象的名称“依赖注入”(Dependency Injection)。
依赖注入的形式主要有三种,分别将它们叫做构造子注入(Constructor Injection)、设值方法注入(Setter Injection)和接口注入(Numbererface Injection)。
2.本系统中的应用
本系统中在实现操作数据库的DAO接口时使用了接口注入的方式。在实现类中定义DAO接口的对象,及其seter方法,在实现类的具体方法中使用此对象,通过调用它的CIUD操作方法,实现操作数据库的方法。
4.1.1.4 工厂模式
1.模式概念
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。
工厂模式在《Java与模式》中分为三类: 简单工厂模式(Simple Factory)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)。
这三种模式从上到下逐步抽象,并且更具一般性。
GOF在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory)。将简单工厂模式(Simple Factory)看为工厂方法模式的一种特例,两者归为一类。
本系统主要使用了简单工厂模式。简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。
先来看看它的组成:
1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
2.本系统中的应用
本系统使用Hibernate操作数据库,这其中就包含了对工厂模式的使用。Hibernate中对数据库的操作都是通过Session(与JSP中的Session不同)完成,使用时必须取得操作数据库的Session。而Session是一个接口,所以必须通过其他类实例化。
具体做法为,先在操作数据库的实现类的构造方法中实例化Session对象,再找到Hibernate的配置,从配置中取出SessionFactory,最后从SessionFactory中取出一个Session完成操作数据库。
4.1.2 框架知识
本系统采用SSH架构,主要使用了Sturts、Spring、Hibernate三大框架,下面就一一介绍。
4.1.2.1 Struts 2.5
struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。并且Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。
除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活运用,能大大提高开发效率。
其工作流程如下:
服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存。以登陆为例:第一次进login.JSP会先实例化Form、把默认值赋给表单元素。输入用户名密码提交表单、提交到action属性的login.do,通过ActionServlet读struts-config.xml文件找到 action下的path属性找到.do,通过name属性找form-beans中的form-bean的name属性得到ActionForm的包名类名,先实例化form,把表单的值填充给form,调用form的validate方法验证、ActionErrors返回null表示验证通过,否则失败返回input指定的页面.验证通过会实例化Action,执行Action的excute方法。
4.1.2.2Spring 2.5
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。它是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。并且它有如下优点:
◆低侵入式设计,代码污染极低
◆独立于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺
◆Spring的DI机制降低了业务对象替换的复杂性
◆Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部
4.1.2.3 Hibernate 3.0
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思文来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>