j2ee项目实训uml及设计模式——第3章系统概要设计中的架构设计第2部分内容摘要:
某个 系统的整体架构设计 的 示例,该系统架构是充分地应用了目前在 J2EE 平台中比较主流的三种不同形式的框架 技术。 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 7/15 页 图 某 系统的整体架构设计示图 采用该形式的系统架构的主要目的,是希望能够保证 项目在系统架构设计方面所提出的尽可能达到系统的可重用性、可扩展性及技术实现的简单化等设计目标的要求。 1) 表示层由基于 Struts 框架 的 JSP 页面 组件实现 ,并且在其中应用 Struts 框架的各种标签技术来减少页面中的 JSP 脚本的数量,同时也应用支持 AJAX 技术的 DWR 框架来产生异步通讯交互的实现。 2) 控制层由基于 Struts 框架 的 前端控制器 ActionServlet 组件(作为项目的前端控制器,并对它进行重写以满足项目中的特 殊要求) 和 后端业务控制器 Action 组件 (实际是应用 Struts 中的 DispatchAction 类型的 Action 组件 ) 实现。 3) 业务处理层由 Spring 框架承担 ,并利用其控制反转 IoC 技术实现对整个项目中的从控制层、业务处理层和持久层中各个相关对象的实例进行管理,以产生出松藕合的系统类;同时借助 Spring 框架中的面向切面编程 AoP 技术,为项目提供各种形式的“拦截器”通知组件以分离系统中的“技术关注点”。 4) 数据访问层由 目前比较主流的支持 O/R Mapping 技术的 Hibernate 框架承担 ,利用其功能强大的 O/R Mapping 技术以及数据缓存等方面的技术,以实现面向对象的数据库访问操作。 同时也能够改进项目中的数据访问的性能。 架构设计的目标之二是希望能够达到最灵活的可扩展性 ( 1)软件系统开发中必须要考虑的一个问题 如何尽可能地延长所开发出的软件系统的生命期,以降低企业经营中在信息化技术方面的成本和投资。 ( 2)如何达到本应用系统具有“最灵活的可扩展性” 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 8/15 页 当然,灵活地应用各种架构模式和代码的设计模式是必要的技术实现手段。 因为在面向对象分析、设计和开发中,系统设计师和程序员更重视应用系统本身和系统在编 程实现时的代码的可重用性和可维护性,这通过应用 各种架构模式 ( 如可以应用 J2EE 的核心设计模式, 分布式系统和交互式系统都有特定的架构模式)和代码 的设计模式(如 GOF 的 23 种设计模式 )能够使设计师和程序员可以更加简单、方便地重复使用成功的设计和体系结构。 同时,在代码 的设计模式 中所倡导的面向接口编程, 也 能够提高系统的可扩展性和可移植性。 架构设计的目标之三是希望能够设计出“高内聚低藕合”的应用系统 ( 1)利用“分层”架构造实现系统在纵向上的低耦合 比如将应用系统在分层设计时,可以划分为五个层次。 分别是: 表示层、控制层、业务逻辑层、服务层( DAO)、数据访问层。 在纵向上分层的目的是为了达到:表示逻辑、控制逻辑、业务逻辑与数据访问逻辑的分离和层与层之间的松散耦合。 相邻的层次之间,通过“接口”进行调用和通信,即:采用面向接口编程的思想,从而实现了系统的易用维护和升级的目的。 ( 2)利用 开源 框架 进一步确保 纵向的分层 的具体实现 系统的“ 表示层 + 控制层 ” 采用 Struts 框架 技术来实现 原因如下: Struts 的标签技术具有强大的功能。 因此在表示层中,使得数据的显示、简单的逻辑处理以及模板的应用非常方便。 同时 Struts 采用了前段控制器的架构模式,这使得表示层与控制层之间能够更好的实现松散耦合。 同时进行在控制层中进行了明确的分工(如: ActionServlet 与 Action),为系统的维护与升级提供了有力的保障。 同时提供了数据连接池、加入了表单验证等机制等。 使得程序设计的方面的工作 会 更少。 业务逻辑层采用 Spring 框架 技术来实现。 原因如下:采用 Spring 技术主要是利用其“依赖注入”和“控制反转”两大思想。 依赖注入完全实现了设计模式中的抽象工厂方法,同时更有利于我们实现面向借口的编程的思想。 我们在控制层 中只需调用(操纵)业务类所实现的借口,而由 Spring 框架为我们动态的注入对象。 这使得系统今后可以很方便的进行升级和维护。 控制反转主要采用了模板模式的设计思想,使得我们在程序设计时不必再为系统的控制而认为的调用系统类库,而只需实现系统定义的方法或是补充适量的自定义方法即可。 即:把控制权交给了框架,这使可以大大减轻开发的工作量,同时实现了“非侵入式”方杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 9/15 页 案(即:轻量级的框架)。 系统的“ 服务层 + 业务逻辑层 ”可以 采用 DAO 模式设计 + Hibernate 框架 来实现 原因如下:由于采用面向对象的设计,而现有的 数据库都是采用结构化进行设计的,所以需要一种 O/R Mapping 工具来进行关系数据库到对象数据的一种映射, Hibernate 技术很好的实现了这种功能。 它能够使得我们采用面向对象的思想来进行数据的持久化。 同时它又实现了日志管理、数据缓存、事务管理等各种技术,简化了程序开发过程。 利用 DAO 模式,主要是对 Hibernate 的进一步封装。 即:用 DAO 实现了“服务层”的功能。 这样做的优点是避免了业务逻辑处理层中直接调用有关数据访问的操作,实现了业务逻辑层与数据访问层之间的松散耦合。 ( 3) 通过功能划分子系统来实现 横方向上的低耦合 按照系统功能的聚集关系对系统进行划分,通过将不同的子系统 放 到不同的目录下实现系统横方向上的划分。 设计好各个不同子系统之间调用的接口,各子系统面向接口编程,实现松散耦合。 同时注意应用设计模式是实现横向上的低耦合 的有效措施 ,如:“桥接模式” 的应用。 ( 4)利用“包”结构 确保 横 向 上的低耦合 的具体实现 按照业务逻辑进行包的划分。 在每个包的内部,同样采用分层的思想,针对接口编程,实现松散耦合。 同时 再 为每个包提供一个或多个接口,以达到横向方向上的低耦合 ;而在包内则充分应用 封装策略 , 使复杂性内聚。 明确软件产品或者软件项目中的“变化”的要素 好的软件产品在开发的过程中就应该要考虑到可能的变化,任何一个软件的系统架构师都不能解决或者说前瞻所有的变化,但是好的软件的架构设计(框架和组件)能够比较容易的适应变化。 此时的开发者只需要很小的代价就能够。j2ee项目实训uml及设计模式——第3章系统概要设计中的架构设计第2部分
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。