Flyingis

Talking and thinking freely !
Flying in the world of GIS !
随笔 - 156, 文章 - 16, 评论 - 589, 引用 - 0
数据加载中……

MVC的一幅简单素描

 作者:Flyingis

 

素描工具: Struts + Hibernate 3

素描对象:一个足够简单的基于 MVC Web 应用

目的:使用 Struts 分离业务逻辑与表现,使用 Hibernate 分离数据操作与业务逻辑,整理一种基本的 MVC 开发思路。

 

1. 素描框架
 

    该素描主要体现在系统层次的功能划分,系统结构的组织与设计上,素描足够简单,数据库中只涉及一张表:

    学生信息(学生编号、姓名、性别、年龄、专业信息)--Student( id, name, gender, age, specialty_id )

  • 系统设计

    公共类的设计与实现

    各模块的详细设计,主要描述一个基本的 CRUD 操作,以及对象数据传递

  • 系统的部署、测试与发布

2. 公共类设计
 

    基本的 CRUD 操作封装在基本的帮助类 HibernateHelper 中,实现 Object load(Class theClass, java.io.Serializable id) Query createQuery(String queryString) void setQueryParameter(Query query, String name, Object val) List list(Query query) void save(Object o) void update(Object o) void delete(Object o) void saveOrUpdate(Object o) 等这些基本方法。
 

    常量单独封装在 Constants 类中。

 

3. 各种对象设计

  • ActionForm:StudentForm-- 用于视图层与控制层之间传递数据。
  • 接口 StudentIf-- 实现了学生数据对象 Bean 所需要的所有接口方法。
  • 学生数据对象 StudentData-- 实现了记录学生对象数据的功能,并可以用作数据交互的传输对象,它实现了接口 Serializable StudentIf
  • 学生实体 Bean StudentBean-- 实现了学生实体的所有属性,它实现了接口 Serializable StudentIf

4. 对象管理实现类
 

    业务逻辑处理为项目的核心,直接关系到项目是否符合用户需求。因此,我们可以单独设计一个对象管理实现类 ManagerFacade,定义处理业务对象的CRUD操作,以增加学生信息为例public StudentIf addStudent(StudentIf student)。学生数据对象StudentDataAction中通过StudentForm接收到表现层传入的数据,然后作为ManagerFacade对象的addStudent方法的参数传入方法内,在方法体内声明学生实体StudentBean的一个对象,将学生数据对象即传入参数中的属性值赋给实体对象,然后调用公共类HibernateHelper的save方法完成数据库操作。其他基本操作与此类似,这样设计似乎对象较多,但各层之间分工明确,有利于降藕。

    另外,在数据传递过程中,还会涉及到数据类型的转换,可以专门设计帮助类来完成。

 

5. 页面 UI 设计
 

    除了设计美观的页面外,最重要的是页面结构要符合项目需要,并提供一定的使用体验,有时候简单实用就是最好。如果可以对用户浏览器统一规范要求,或是基本不会屏蔽 Javascript ,数据格式的控制可以放在客户端用 Javascript 实现。

 

6. 系统的部署、测试与发布。

posted on 2006-03-27 17:50 Flyingis 阅读(2596) 评论(6)  编辑  收藏 所属分类: Web 框架与开发

评论

# re: MVC的一幅简单素描  回复  更多评论   

基本上看不出mvc
2006-03-27 18:23 | good

# re: MVC的一幅简单素描  回复  更多评论   

在这个场景中,StudentForm是VO,StudentBean是可以被持久化的实体对象,即PO,StudentData在这里主要起到BO的作用,但不包括业务逻辑,业务逻辑从BO中分离出来,单独封装在对象管理的一个类中,这样便于对象间的解耦和分离,文中描述的是各对象之间相互衔接作用的一种简单的方式,看了很多高手的大作和讨论,理论性特别强,因此通过一个简单的实例描述了一种传输方式。
以前对这些概念比较模糊,现在也在学习中,请多指教。
2006-03-27 21:34 | Flyingis

# re: MVC的一幅简单素描  回复  更多评论   

以前在NEC系统集成工作的时候,开发web程序用的是小日本的自己框架,小日本很狂妄的说,这个框架你们很难理解的,后来一看,标准的mvc模式

过了一年,用了structs,发现小日本框架就是个简化版的structs

MVC模式经久不衰


欢迎访问:http://www.shuangzixing.net
2006-03-28 20:40 | fanse

# re: MVC的一幅简单素描  回复  更多评论   

bgchd e ghdtrhg aa
2006-04-19 12:02 | zhangxiuxiu

# re: MVC的一幅简单素描  回复  更多评论   

@Flyingis
请教:
Struts , Hibernate在.net环境,VC++环境的对应框架有哪些?
2007-05-24 08:51 | flyingfish

# re: MVC的一幅简单素描  回复  更多评论   

@flyingfish
VC++很少应用于Web应用开发,.Net框架中的主流web开发语言是vb.net和c#。
由于Java开源的本质,其MVC框架往往有多种选择,但.net框架中就只有asp.net可以选择,简单易用,最明显的不足是不能跨平台部署。
Hibernate在.net中有Nhibernate可以选择,后者生于前者。
2007-05-24 22:40 | Flyingis

只有注册用户登录后才能发表评论。


网站导航: