跟我学面向对象的系统架构设计-如何进行面向对象的系统架构设计_第1页
跟我学面向对象的系统架构设计-如何进行面向对象的系统架构设计_第2页
跟我学面向对象的系统架构设计-如何进行面向对象的系统架构设计_第3页
跟我学面向对象的系统架构设计-如何进行面向对象的系统架构设计_第4页
跟我学面向对象的系统架构设计-如何进行面向对象的系统架构设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何进行面向对象的系统架构设计

一个好的系统体系设计方案应尽量满足以下准则:可重用性、可扩展性、简洁性、高性能和高安全性等。系统设计与设计模式的应用概述(2)需求分析并不能解决一切问题

开发者抱怨说,用户为什么当初不提出这些新的需求呢?而用户抱怨说,当初怎么可能预料到现在的需求呢?(3)比较困惑的事情如果我们试图发现需求怎样变化,那开发过程将永远会停留在对系统的分析阶段。而如果所开发出的软件系统能面向未来,那我们也将永远处在系统的设计阶段。1、在进行系统设计和开发时就应该要考虑系统以后有可能有哪些方面的变化(1)用户需求在客观上是不断地变化的

在系统设计阶段,最关键的问题是由于系统需求是变化的,哪么我们的设计如何能够“拥抱变化”和“适应变化”呢?如何能够从此圈套中解脱出呢?2、如何能够“拥抱变化”和“适应变化”(1)除了分层解藕外,在类设计方面应该遵守的几个原则针对接口编程而不要针对具体实现类编程。

classSomeClassimplementsSomeInterface//extends SuperClass{}当组件之间需要进行关联时,应该优先使用对象组合,而不应用类的继承。对系统进行分析以找出系统中的可变部分对变化的部分应该尽可能进行分离,这样当“要素”发生变化的时候,不至于引起对系统的重新设计或者做大量的系统实现代码的修改。(2)“封装变化”是类设计时主要考虑的问题在GoF的23种代码实现模式中都体现有“封装变化”的实现。而通过GRASP,又能够准确地进行类的各个职责分配您知道为什么吗?面向对象的系统架构设计

在本讲希望重点掌握如下内容面向对象架构设计的基本原则架构设计中的层模式及应用J2EE平台中典型的分层策略MVC架构模式及应用WebMVC(JSPModelTwo构架)StrutsMVC架构模式及应用1、区分面向过程的设计方法和面向对象的设计方法的本质区别

(1)面向过程的设计方法由于是建立在三种能够构成结构化程序的逻辑构造元素方面——顺序、选择和重复并且面向过程的设计方法采用的是“自顶向下、逐步精化”的经典瀑布式设计方法。这种设计方法要求系统设计者在系统设计之初就需要对软件系统中所应该要解决的各个方面的问题(也就是系统的需求)有全面的、周密的了解。这样的设计方法在目前的软件系统的功能比较复杂和需求频繁多变的企业级的应用系统设计和开发实现中,将会存在有一定的难度。请思考:面向过程的程序设计方法是学习面向对象技术的基础还是阻碍?(2)面向对象的设计方法设计者可以充分利用对象所具有的“抽象、封装、继承和多态”等特性,同时面向对象的系统设计方法是一种“自下而上”的设计方法。它所带来的优点是能够形成一种螺旋上升的软件开发方式,这对于已有的系统设计只需要进行局部地修改或者调整就可以满足软件系统的变化要求。(3)面向对象的系统架构设计方法的主要优点应用面向对象的系统架构设计方法能够保证软件系统的体系架构的设计结果具有一定的可重用性、可扩展性。(4)面向对象的系统架构设计方法的应用场合对于系统功能需要不断扩充的软件项目(如商业进销存系统、客户关系管理系统等)或者需要系列化的产品软件的系统架构设计(如财务产品软件、税务产品软件等

(1)应用系统经过合理地纵向分层和隔离使得系统中的每一层都能够为其所对应的上一层提供功能服务而成为服务的提供者同时也作为下层的客户端而获得所需要的其他层所提供的功能服务。(2)J2EE技术规范为开发复杂的、分布式企业级的应用系统定义了一套体系结构和技术规范,它不仅提供了一套完整的基于标准化模块的功能服务组件,而且也提供了对企业应用系统的标准纵向分层设计方案。2、面向对象架构设计的基本原则——纵向分层隔离原则

各个层之间只存在单向依赖关系——较好地实现了各个层的封装和彼此间的隔离。(3)遵守纵向分层隔离原则的主要优点能够屏蔽各个层中的功能组件的具体技术实现细节、同时也能够达到某个层次的模块使用者只管使用所需要的目标层中的组件功能服务,而并不需要去了解该目标层中的各个组件的具体结构以及它们的具体技术实现的细节。另外,在应用系统的需求发生变化时,只需要改变某些基础层中的功能服务组件,但不会影响到其上层中的服务使用者组件的技术实现和程序代码。3、面向对象架构设计的基本原则——依赖倒置原则(1)传统的系统架构设计所存在的主要问题在传统的系统架构设计方法中倾向于使高层次的模块直接依赖于低层次的模块、抽象层程序依赖于具体实现层次的功能组件程序。(2)而依赖倒置原则就是要把这种错误的依赖关系倒转过来。以前传统的过程设计中是从上到下的一条依赖

(3)为什么要遵守依赖倒置原则随着软件系统功能的不断复杂化,系统中的各个层与层之间、层中的各个模块与模块之间的依赖关系会逐渐加强,软件系统的整体方面的可扩展性逐渐减弱。而在系统架构设计时,遵守依赖倒置原则将可以减轻或者避免这样的设计缺陷的状况出现。(4)如何正确地应用依赖倒置原则为了能够满足依赖倒置原则的基本要求,需要以接口作为软件系统中的各个层之间的“粘联剂”。4、面向对象架构设计的基本原则——接口定义和接口实现分离原则(1)软件系统经过合理地分层隔离后,如何设计并决定出层中的各个组件类之间的关系、分配各类的职责?将系统中的各个功能模块的接口定义和对这些接口的具体实现相互分离,是系统中的类设计的指导原则。(2)该设计原则的基本指导思想为了能够消解两个类之间的依赖关系,应该要在两个类之间定义出一个抽象的接口。上层类调用这个抽象接口中定义的方法,而下层类具体地实现该接口中定义的各个方法。5、架构设计中的层模式及应用(1)层模式(Layerspattern)的设计思想将系统中的大尺度的逻辑结构组织到不同的层中,每一层都具有独立和相关的职责较低的层提供低级和通用的服务,较高的层提供特定的应用服务(2)分层架构的主要优点层次的复用性:如果每个层次都有很好的抽象接口的定义,那么它可以在其他环境中能够被复用。模块化:设计者可以把一个复杂系统进行分解,使系统更容易模块化。可扩展性良好:因为每一层至多和相邻的上下层交互,因此功能的扩展和改变不会出现“连锁反应”。(3)分层架构的主要缺点数据传送低效率:分层结构通常要比单层结构的效率低,因为有时高层过分依赖底层的服务,因此必须穿过许多中间层进行数据的传送,甚至多次。不良好的分层隔离结果将可能会出现连锁反应形式的修改6、标准的三层架构的系统(1)采用设计模式可简单方便地复用成功的设计和体系结构设计可复用的面向对象软件有很多难点。如找到相关对象;以适当的粒度将其归类;定义类的接口和继承层次,建立对象之间的基本关系;设计方案既要对现有的问题有针对性,也还要对将来的问题和需求也有足够的通用性;避免重复设计或尽可能少做重复设计而通过采用设计模式,能大大提高系统的可扩展性、可重用性和可维护性,并能降低系统设计和开发实现的难度,最终提高开发的效率。(2)标准的三层架构的分层策略

MartinFowler在《PatternsofEnterpriseApplicationArchitecture》一书中,将整个架构分为三个主要的层:表示层(Presentation)、领域层(Domain)和数据源层(DataPersistence)

(3)标准的三层架构存在的主要不足表现层和业务逻辑层之间存在一定的耦合

同一业务逻辑不同支持多种形式的客户界面(C/S、B/S、Mobile等)。业务逻辑和数据访问也存在一定的藕合

由于数据访问在实现技术(如JDBC、Hibernate或JDO)、数据源类型(XML、数据库)、访问方式(连接池)等可能会有不同的要求。导致在各种数据库之间移植就需修改很多业务逻辑层中的代码。表示层业务逻辑层数据访问层数据库系统7、J2EE平台对标准的三层架构的完善(1)应用数据访问服务层隔离业务层和数据访问层以隔离数据源表示层业务逻辑层数据访问层数据库系统数据访问服务层(2)应用控制层隔离表现层和业务层以支持多客户端(3)基于EJB的分布式架构体系下的分层策略

将整个系统分为客户端和Web容器、EJB容器几个不同的部分,将GUI应用的客户端、Web浏览器客户端和Web响应处理以及企业业务功能处理等分离。8、MVC架构模式及应用(1)MVC架构模式概述(视图通过控制器隔离于模型)J2EE多层体系结构的灵感其实来自模型/视图/控制器(Model-View-Controller,MVC)架构设计思想。MVC模式是软件设计的典型结构---一个复杂的应用系统被分解为模型、视图和控制器三个部分。它们分别对应于系统中的业务逻辑和数据访问、用户界面、用户请求处理和数据同步等方面的功能实现。MVC是用来帮助控制系统中“变化”的一种设计模式。(2)MVC设计理念基于MVC设计的理念认为,在一个应用系统中,用户界面发生变动的可能性最大,而业务逻辑部分一般是最稳定的。因此实现业务逻辑编的功能代码不应和反映用户界面的代码混杂在一起,而是彼此应该尽可能地独立和分离,并由系统中的控制器来担当两者交互的中介。您理解“变化”的含义吗?最大的变化,做到最小的改动(3)MVC的主要作用MVC不是一种设计模式(DesignPattern),它是一种架构模式(ArchitecturalPattern)它用以描述应用程序的结构以及结构中各部分的职责和交互方式(4)MVC的各种应用模型-视图-控制器(MVC)是80年代在Smalltalk-80中出现的一种软件体系架构设计模式,现在已经被广泛地应用在各种技术平台中。MVC被广泛地应用在C/S和B/S的二层和三层的应用开发结构中,MVC是为那些需要为同样的数据提供这是MVC的典型应用的场合多个不同的视图应用而设计的,它很好地实现了业务层与表示层的分离9、WebMVC(“JSPModelTwo模式构架”)(1)工作原理图(在1999年2月的JavaWorld大会上,由GovindSeshadri博士提出)

(2)WebMVC是对Smalltalk-80中的标准MVC的改进由于Http协议是无状态的,因此模型和视图之间不能直接应用Observer模式进行状态改变的通知。

MVC在Web方式下将改由控制器Servlet组件实现模型和视图之间的“代理”---调度模型组件和通知视图更新显示(通过forward或redirect形式实现响应输出)。10、StrutsMVC又是对常规的WebMVC的进一步改进Struts(WebMVC2)是一组相互协作的类、Servlet和JSP标签,它们组成一个可重用的WebMVC2的系统架构(2010年提出)。(1)StrutsMVC的实现方式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论