模型组件代表应用的业务数据和逻辑.坦率的说Struts框架并没有为设计和创建模型组件提供线程的框架.不过Strtus允许使用其他的模型组件来处理应用的业务领域.如EJB活JDO以及常规的JavaBean和ORM.
模型是应用中重要的一部分,它包含了业务实体和业务规则,负责访问和更新持久化数据.应该把所有的模型组件放在系统中的同一个位置,这样利于维护数据和完整性,提高可重用性.模型和视图以及控制器之间保持独立,在分层框架结构中.位于上层的视图和控制器依赖于下层的模型的实现,而下层的模型不应该依赖于上层的视图在控制器的实现.如果在模型组件中通过JAVA的import语句引入了视图和控制器组件,这样的程序就垃圾了.
在科学和工程技术领域,模型是一个很有用途的概念,它可以用来模拟一个真是的系统.在软件开发领域,模型用来表示真是世界的实体.在软件开发的不同阶段,需要为目标系统创建不同的模型.可以采用面向对象的建模语言UML来描述.
在建模之前首先要对问题域进行详细的分析,确定用例,接下来可以根据用例来创建概念模型.概念模型用来模拟问题域中的真实实体.概念模型描述了每个实体的概念和属性,以及实体之间的关系.这个阶段并不描述实体的行为.比如说商品和商品目录之间存在多对多的关系,这是因为一个商品目录包含多个商品,而一个商品也可以属于多个商品目录.
设计模型需要在概念模型的基础上设计.可以用UML类框图,活动图以及状态图来描述设计模型.根据UML语言,类之间存在四种关系:
1) 关联(Association):就是类之间的引用关系,
2) 依赖(Dependency):是指类之间的访问关系.
3) 累积(Aggregation)就是说整体与个体之间的关系,可以把累积看作一种强关联关系.
4) 一般化(Generalization):是类之间的继承关系.
如果想了解如何为应用创建合理的面向对象的设计模型,可以浏览www.uml.org深入了解UML语言.
业务对象BO(Business Object),是对真是世界的实体的软件抽象.它可以代表业务领域中的人,地点,事务或者概念.业务对象包括状态和行为.如果一个类可以作为业务对象它应该具有以下特征:
1) 包含状态和行为.
2) 代表业务领域的人,地点,事务或概念.
3) 可以重用.
业务对象客分为三种类型:
1) 实体业务对象.
2) 过程业务对象.
3) 事件业务对象.
实体对象就是具体的对象,比如人,地点,商品,订单.过程对象就是业务过程或者流程,
他们通常依赖于实体对象.可以把业务领域的动词,比如登陆,发货等作为过程对象.事件对象代表一些时间如比异常,警告,超时,错误.这些事件通常由系统中的行为触发器激活.在应用使用业务对象好处很多,最重要的一点就是业务对象提供了通用的技术术语和概念,不管技术人员还是非技术人员都可以共享理解它们.此外业务对象可以隐藏实现的细节,对外只暴露接口,提高了安全性.
通常,持久化意味着通过手工或者其他方法输入到应用中的数据,能够在应用结束运行后依然存在.即使应用运行结束或者计算机关闭,这些信息依然存在.当应用中的业务对象在内存中创建后,他们不可能永远存在.最后,他们要么消失,要么就要被持久化到数据库中.内存无法永久保留数据,因此必须对业务对象进行持久化.关系型数据库被广泛用来存储数据.关系型数据库中存放的是关系型数据.它是非面向对象的.把业务对象映射到非面向对象的数据库中,因为对象由状态和行为组成,而关系数据库则由表组成.对象之间的各种关系和关系型数据库中表之间的关系并不一一对应.例如对象之间继承关系就不能直接映射到关系型数据库中了.而对于JAVA应用,可以直接通过JDBC编程来访问数据库.JDBC可以说是访问持久化数据层的最原始最直接的方法,如果数据模型非常复杂,这里我推荐用Hibernate架构来进行持久化层的处理.
因为Struts中本身不包含处理模型的架构,所以在这里只是简单的对模型进行了介绍.至于具体的知识可以研究Ejb,JavaBean等技术.至于持久化层的hibernate架构,这里我推荐阅读孙卫琴的:<<精通Hibernate>>.(网友们的支持,是我继续写技术文章的动力!)
posted on 2005-10-25 12:27
我心依旧 阅读(1142)
评论(2) 编辑 收藏