版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本资料来源第9章软件体系结构与设计模式软件体系结构的基本概念典型的软件体系结构风格特定领域的软件体系结构分布式系统结构体系结构框架设计模式9.1软件体系结构的基本概念什么是体系结构目前还没有一个公认的关于软件体系结构的定义,许多专家学者从不同角度对软件体系结构进行了描述。Bass、Clements和Kazman给出了如下定义:“一个程序或计算机系统的软件体系结构是指系统的一个或者多个结构。结构中包括软件的构件、构件的外部可见属性以及它们之间的相互关系。外部可见属性则是指软件构件提供的服务、性能、使用特性、错误处理、共享资源使用等。”这一定义强调在任一体系结构表述中“软件构件”的角色。DewaynePerry和A1exanderWo1f曾这样定义:“软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。”这一定义注重区分处理构件、数据构件和连接构件。虽然软件体系结构的定义在变化,但其意图是清晰的。体系结构设计是一系列决策和基本原理的集合,这些决策的目标在于开发高效的软件体系结构。在体系结构设计中所强调的基本原理是系统的可理解性、可维护性和可扩展性。9.1软件体系结构的基本概念1.模式软件设计模式是从软件设计过程中总结出来的,是针对特定问题的解决方案。建筑师C.Alexander对模式给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题及该问题解决方案的核心。在软件系统中,可以将模式划分为以下3类。(1)体系结构模式(architecturalpattern):表达了软件系统的基本结构组织形式或者结构方案,包含了一组预定义的子系统,规定了这些子系统的责任,同时还提供了用于组织和管理这些子系统的规则和向导。典型的体系结构模式如OSI参考模型。9.1软件体系结构的基本概念体系结构模式、风格和框架的概念
(2)设计模式(designpattern):为软件系统的子系统、构件或者构件之间的关系提供一个精炼之后的解决方案,描述了在特定环境下,用于解决通用软件设计问题的构件以及这些构件相互通信时的各种结构。有代表性的设计模式是ErichGamma及其同事提出的23种设计模式。(3)惯用法(idiom):是与编程语言相关的低级模式,描述如何实现构件的某些功能,或者利用编程语言的特性来实现构件内部要素之间的通信功能。9.1软件体系结构的基本概念2.风格风格是带有一种倾向性的模式。同一个问题可以有不同的解决问题的方案或模式,但我们根据经验,通常会强烈倾向于采用特定的模式,这就是风格。每种风格描述一种系统范畴,该范畴包括:(1)一组构件(如数据库、计算模块)完成系统需要的某种功能;(2)一组连接件,它们能使构件间实现“通信”、“合作”和“协调”;(3)约束,定义构件如何集成为一个系统;(4)语义模型,它能使设计者通过分析系统的构成成分的性质来理解系统的整体性质。9.1软件体系结构的基本概念
体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。对体系结构风格的研究和实践为大粒度的软件复用提供了可能。9.1软件体系结构的基本概念9.1软件体系结构的基本概念3.框架随着应用的发展和完善,某些带有整体性的应用模式被逐渐固定下来,形成特定的框架,包括基本构成元素和关系。框架是特定应用领域问题的体系结构模式,框架定义了基本构成单元和关系后,开发者就可以集中精力解决业务逻辑问题。在组织形式上,框架是一个待实例化的完整系统,定义了软件系统的元素和关系,创建了基本的模块,定义了涉及功能更改和扩充的插件位置。典型的框架例子有MFC框架和Struts框架。
体系结构的重要作用体现在以下三个方面:(1)体系结构的表示有助于风险承担者(项目干系人)进行交流。(2)体系结构突出了早期设计决策。(3)软件体系结构是可传递和可复用的模型。
9.1软件体系结构的基本概念体系结构的重要作用当输入数数据经过过一系列列的计算算和操作作构件的的变换形形成输出出数据时,,可以应应用这种种体系结结构。管道/过滤器、批处理序序列都属于数数据流风风格。管管道/过滤器结结构如下下图所示示。9.2典型的体体系结构构风格数据流风风格管道/过滤器结结构从上图可可看出,,管道/过滤器结结构拥有有一组被被称为过滤器(filter)的构件件,这些些构件通通过管道(pipe)连接,,管道将将数据从从一个构构件传送送到下一一个构件件。每个个过滤器器独立于于其上游游和下游游的构件件而工作作,过滤滤器的设设计要针针对某种种形式的的数据输输入,并并且产生生某种特特定形式式的数据据输出。。如果数据据流退化化成为单单线的变变换,则则称为批处理序列(batchsequential)。这种结构构接收一批数数据,然后应应用一系列连连续的构件((过滤器)变变换它。9.2典型的体系结结构风格管道/过滤器风格具具有以下优点:(1)使得软构件件具有良好的的隐蔽性和高高内聚、低耦耦合的特点。(2)允许设计者者将整个系统统的输入/输出行为看成成是多个过滤器的行为的的简单合成。。(3)支持软件复复用。只要提提供适合在两两个过滤器之之间传送的数据,任何何两个过滤器器都可被连接接起来。(4)系统维护和和增强系统性性能简单。新新的过滤器可可以添加到现有系统中中来;旧的可可以被改进的的过滤器替换换掉。(5)允许对一些些如吞吐量、、死锁等属性性的分析。(6)支持并行执执行。每个过过滤器是作为为一个单独的的任务完成,因此可与与其他任务并并行执行。9.2典型的体系结结构风格管道/过滤器风格主要缺点如下:(1)通常导致进进程成为批处处理的结构。。这是因为虽虽然过滤器可增量式地地处理数据,,但它们是独独立的,所以以设计者必须须将每个过滤器器看成一个完完整的从输入入到输出的转转换。(2)不适合处理理交互的应用用。当需要增增量地显示改改变时,这个问题尤为为严重。(3)因为在数据据传输上没有有通用的标准准,每个过滤滤器都增加了解析和合合成数据的工工作,这样就就导致了系统统性能下降,,并增加了编写写过滤器的复复杂性。9.2典型的体系结结构风格在此类体系结结构中,存在在以下3种子风格。1.主程序/子程序体系结结构这种传统的程程序结构将功功能分解为一一个控制层次次,其中“主”程序序调用一组程程序构件,这这些程序构件件又去调用别别的程序构件,,如下图所示示。这种结构构总体上为树树状结构,可以在底底层存在公共共模块。9.2典型的体系结结构风格调用—返回风格主程序/子程序体系结结构的优点如下:(1)可以使用自自顶向下,逐逐步分解的方方法得到体系系结构图,典型的拓拓扑结构为树树状结构。基基于定义—使用关系对子子程序进行分解解,使用过程程调用作为程程序之间的交交互机制。(2)采用程序设设计语言支持持的单线程控控制。其主要缺点如下:(1)子程序的正正确性难于判判断。需要运运用层次推理理来判断子程序的正确确性,因为子子程序的正确确性取决于它它调用的子程程序的正确性。。(2)子系统的结结构不清晰。。通常可以将将多个子程序序合成为模块。9.2典型的体系结结构风格2.面向对象风格格系统的构件封封装了数据和和必须应用到到该数据上的的操作,构件间通通过消息传递递进行通信与与合作。与主主程序/子程序的体系结构构相比,面向向对象风格中中的对象交互互会复杂一些。面向对象象风格与网络络应用的需求求在分布性、、自治性、协作性、演化化性等方面具具有内在的一一致性。面向对象风格格具有以下优点:(1)因为对象对对其他对象隐隐藏它的表示示,所以可以以改变一个对象的表示示,而不影响响其他对象。。(2)设计者可将将一些数据存存取操作的问问题分解成一一些交互的代理程序的的集合。9.2典型的体系结结构风格其缺点如下:(1)为了使一个个对象和另一一个对象通过过过程调用等等进行交互,必须知知道对象的标标识。只要一一个对象的标标识改变了,就必必须修改所有有其他明确调调用它的对象象。(2)必须修改所所有显式调用用它的其他对对象,并消除除由此带来的一些副副作用。例如如,如果A使用了对象B,C也使用了对象象B,那么,C对B的使用所造成成的对A的影响可能是是料想不到的的。9.2典型的体系结结构风格3.层次结构层次结构的基基本结构如下下图所示。在在这种体系结结构中,整个系统被组织织成一个分层层结构,每一一层为上层提提供服务,并并作为下一层的的客户。9.2典型的体系结结构风格这种风格支持持基于可增加加抽象层的设设计。允许将将复杂问题分解成一个个增量步骤序序列的实现。。由于每一层层最多只影响响两层,同时只只要给相邻层层提供相同的的接口,允许许每层用不同同的方法实现,,同样为软件件复用提供了了强大的支持持。层次结构具有有以下优点:(1)支持基于抽抽象程度递增增的系统设计计,使设计者者可以把一个复杂系统统按递增的步步骤进行分解解。(2)支持功能增增强,因为每每一层至多和和相邻的上下下层交互,因此,功功能的改变最最多影响相邻邻的内外层。。9.2典型的体系结结构风格(3)支持复用。。只要提供的的服务接口定定义不变,同同一层的不同实现可以以交换使用。。这样,就可可以定义一组组标准的接口口,从从而允允许各各种不不同的的实现现方法法。其缺点如下:(1)并不不是每每个系系统都都可以以很容容易地地划分分为分分层的的模式式,甚至即即使一一个系系统的的逻辑辑结构构是层层次化化的,,出于于对系系统性能能的考考虑,,系统统设计计师不不得不不把一一些低低级或或高级级的功能能综合合起来来。(2)很难难找到到一个个合适适的、、正确确的层层次抽抽象方方法。。9.2典型的的体系系结构构风格格数据库库系统统、超文本本系统统和黑板系系统都属于于仓库库风格。在在这种种风格格中,,数据据仓库((如文文件或或数据据库))位于这这种体体系结结构的的中心心,其他构构件会会经常常访问问该数数据仓库库,并并对仓仓库中中的数数据进行行增加加、修修改或或删除除操作。。右图图为一一个典典型的的仓库风风格的的体系系结构构。9.2典型的的体系系结构构风格格仓库风风格上图中中,可把中中心存存储库库变换换成““黑板板”,,黑板板构件件负责责协调信息息在客客户间间的传传递,,当用用户感感兴趣趣的数数据发发生变变化时时,它将通通知客客户软软件。。黑板板系统统的组组成如如下图图所示示。黑黑板系系统的传统统应用用是信信号处处理领领域,,如语语音和和模式式识别别。另另一应应用是松耦耦合代代理数数据共共享存存取。。9.2典型的的体系系结构构风格格特定的的应用用还需需要特特定的的体系系结构构模型型。这这些体体系结结构模模型称称为领域相相关的的体系系结构构。有两种种领域域相关关的体体系结结构模模型::类属模模型(genericmodel)和参考模模型(referencemodel)。9.3特定领领域的的软件件体系系结构构9.3特定领领域的的软件件体系系结构构类属模模型类属模模型是是从许许多实实际系系统中中抽象象出来来的一一般模模型,,它封封装了了这些些系统统的主主要特特征。。例如,,许多多图书书馆开开发了了自己己的图图书馆馆馆藏藏/流通系系统,,若把把它们们的共共同功功能抽抽取出出来并并创建建一个个让所所有图图书馆馆都认认可的的系统统体系系结构构模型型,这这就是是类属属模型型。9.3特定领领域的的软件件体系系结构构类属模模型的的一个个最著著名的的例子子是编译器器模型型,由这这个模模型已已开发发出了了数以以千计计的编编译器器。参考模模型源源于对对应用用领域域的研研究,,它描述了了一个个理想想化的的包含含了系系统应应具有有的所所有特特征的的软件件体系系结构构。它是更更抽象象且是是描述述一大大类系系统的的模型型,并并且也也是对对设计计者有有关某某类系系统的的一般般结构构的指指导。。9.3特定领领域的的软件件体系系结构构参考模模型9.3特定领领域的的软件件体系系结构构参考模模型的的典型型例子子是开放式式系统统互联联(OSI)参考考模型型。9.3特定领领域的的软件件体系系结构构以上两两种不不同类类型的的模型型之间间并不不存在在严格格的区区别,,也可可以将将类属属模型型视为为参考考模型型。区别之之一是是类属属模型型可以以直接接在设设计中中复用用,而而参考考模型型一般般是用用于领领域概概念间间的交交流和和对可可能的的体系系结构构做出出比较较。另外,,类属属模型型通常常是经经过““自下下而上上”地地对已已有系系统的的抽象象,而而参考考模型型是““由上上到下下”地地产生生的。。9.4分布式式系统统结构构在集中中式计计算技技术时时代广广泛使使用的的是大大型机机/小型机机计算算模型型。20世纪80年代以以后,,集中中式结结构逐逐渐被被以PC为主的的微机机网络络所取取代。。个人人计算算机和和工作作站的的采用用,永永远改改变了了大型型机/小型机机计算算模型型,从从而产产生了了分布布式计计算模模型。。9.4分布布式式系系统统结结构构分布布式式计计算算模模型型主主要要具具有有以以下下优优点点::(1)资源源共共享享。。分分布布式式系系统统允允许许硬硬件件、、软软件件等等资资源源共共享享使使用用。。(2)经济济性性。。(3)性能能与与可可扩扩展展性性。。(4)固有有分分布布性性。。(5)健壮壮性性。。分布布式式系系统统的的一一个个最最简简单单的的模模型型是是多多处处理理器器系系统统,,系系统统由由许多多进进程程组组成成,,这这些些进进程程可可以以在在不不同同的的处处理理器器上上并并行行运运行行,,可以以极极大大地地提提高高系系统统的的性性能能。。由于于大大型型实实时时系系统统对对响响应应时时间间要要求求较较高高,,这这种种模模型型在在大大型型实时时系系统统中中比比较较常常见见。。大大型型实实时时系系统统需需要要实实时时采采集集信信息息,,并并利用用采采集集到到的的信信息息进进行行决决策策,,然然后后发发送送信信号号给给执执行行机机构构。。虽虽然,,信信息息采采集集、、决决策策制制定定和和执执行行控控制制这这些些进进程程可可以以在在同同一一台台处理理器器上上统统一一调调度度执执行行,,但但使使用用多多处处理理器器能能够够提提高高系系统统性性能。。9.4分布布式式系系统统结结构构多处处理理器器体体系系结结构构客户户机机/服务务器器((client/server,C/S)体体系系结结构构是是基基于于资源不对对等,且且为实现现共享而而提出来来的,由由服务器、客户机和网络三部分组组成。在C/S体系结构构中,客客户机可可以通过过远程调调用来获获取服务器提供供的服务务,因此此,客户户机必须须知道可可用的服服务器的的名字及它它们所提提供的服服务,而而服务器器不需要要知道客客户机的的身份,也也不需要要知道有有多少台台服务器器在运行行。9.4分布式系系统结构构客户/服务器体体系结构构9.4分布式系系统结构构传统的C/S体系结构构分为两两层。在在这种体体系结构构中,一一个应用系系统被划划分为客客户机和和服务器器两部分分。典型型的两层层C/S体系结构构如下图图所示。。两层C/S体系结构构可以有有两种形形态:(1)瘦客户机机模型。在瘦客客户机模模型中,,数据管管理部分分和应用逻逻辑都在在服务器器上执行行,客户户机只负负责表示示部分。。瘦客户机机模型的的主要缺缺点:它将繁重重的处理理负荷都都放在了了服务器器和网络络上,服服务器负负责所有有的计算算,这将将增加客客户机和和服务器器之间的的网络流流量。目前个人人计算机机所具有有的处理理能力在在瘦客户户机模型型中用不不上。9.4分布式系系统结构构(2)胖客户机机模型。在这种种模型中中,服务务器只负负责对数数据的管理。。客户机机上的软软件实现现应用逻逻辑和与与系统用用户的交交互。胖客户机机模型能能够利用用客户机机的处理理能力,,比瘦客客户机模型在分分布处理理上更有有效。但但另一方方面,随随着企业业规模的的日益扩大大,软件件的复杂杂程度不不断提高高,胖客客户机模模型逐渐渐暴露出了了以下缺缺点:开发成本本较高。。用户界面面风格不不一,使使用繁杂杂,不利利于推广广使用。。软件移植植困难。。软件维护护和升级级困难。。9.4分布式系系统结构构为了解决决以上问问题,三层C/S体系结构构应运而生生。三层层C/S体系结构构中增加加了应用用服务器器。可以以将整个个应用逻逻辑驻留留在应用用服务器器上,而而只有表表示层存存在于客客户机上上。9.4分布式系系统结构构三层C/S体系结构构将整个个系统分分成表示层、应用逻辑辑层和数据层三个部分分,其数数据处理理流程如如下图所所示。9.4分布式系系统结构构9.4分布式系系统结构构(1)表示层:表示层层是应用用系统的的用户界界面部分分,担负负着用户与应应用程序序之间的的对话功功能。它它用于检检查用户户从键盘盘等输入的数数据,显显示应用用程序输输出的数数据,一一般采用用图形用用户界面(graphicuserinterface,GUI)。(2)应用逻辑辑层:应用逻逻辑层为为应用系系统的主主体部分分,包含具体的业业务处理逻逻辑。通常常在功能层层中包含有有确认用户户对应用和数据据库存取权权限的功能能以及记录录系统处理理日志的功功能。(3)数据层:数据层主主要包括数数据的存储储及对数据据的存取操作,一般般选择关系系型数据库库管理系统统(RDBMS)。浏览器/服务器(browser/server,B/S)风格是三三层体系结构的一一种实现方方式,其具具体结构为为浏览器/Web服务器/数据库服务务器。B/S体系结构如如下图所示示。9.4分布式系统统结构B/S体系结构主主要是利用用不断成熟熟的.浏览器技术术,结合浏浏览器的多多种脚本语语言,用通通用浏览器器就实现了了原来需要要复杂的专专用软件才才能实现的的强大功能能,并节约约了开发成成本。从某某种程度上上来说,B/S结构是一种种全新的软软件体系结结构。B/S体系结构具具有以下优优点:(1)基于B/S体系结构的的软件,系系统安装、、修改和维维护全在服务器端端解决。(2)B/S体系结构还还提供了异异种机、异异种网、异异种应用服服务的联机、、联网和统统一服务的的最现实的的开放性基基础。9.4分布式系统统结构与C/S体系结构相相比,B/S体系结构也也有许多不不足之处。。(1)B/S体系结构缺缺乏对动态态页面的支支持能力,,没有集成成有效的数据据库处理功功能。(2)采用B/S体系结构的的应用系统统,在数据据查询等响响应速度上,要远远远地低于于C/S体系结构。。(3)B/S体系结构的的数据提交交一般以页页面为单位位,数据的的动态交互性性不强,不不利于在线线事务处理理(OLTP)应用。9.4分布式系统统结构在客户机/服务器模型型中,客户户机和服务务器的地位位是不同的。为了消消除客户机机与服务器器之间的差差别,提高高系统的伸伸缩性以及有有效地均衡衡负载,可可采用分布布式对象体体系结构来来设计系统。。分布式对象象的实质是在在分布式异异构环境下下建立应用用系统框架和对象象构件,它它将应用服服务分割成成具有完整整逻辑含义义的独立子模模块(称为为构件),各个子子模块可放放在同一台服务器器或分布在在多台服务务器上运行行,模块之之间通过中中间件互相通通信。9.4分布式系统统结构分布式对象象体系结构构通常将这个个中间件称称为软件总线或对象请求代代理,它的作用用是在对象象之间提供供一个无缝缝接口。9.4分布式系统统结构分布式对象象技术的应应用目的是为了降低低主服务器器的负荷、、共享网络资资源、平衡衡网络中计计算机业务务处理的分分配,提高高计算机系统协协同处理的的能力,从从而使应用用的实现更更为灵活。。分布式对象象技术的基基础是构件件。构件是一些独立立的代码封封装体,在在分布计算算的环境下下可以是一个简单的的对象,但大多数数情况下是是一组相关的的对象组合合体,提供一定定的服务。。分布式环境境下,构件件是一些灵灵活的软件件模块,它它们可以位位置透明、、语言独立立和平台独独立地互相相发送消息息,实现请请求服务。。构件之间并并不存在客客户机与服服务器的界界限,接受受服务者扮扮演客户机机的角色,,提供服务务者就是服服务器。9.4分布式系统统结构9.4分布式系统统结构当前主流的的分布式对对象技术规规范有OMG的CORBA、Microsoft公司的.NET和Sun公司的J2EE。它们都支持持服务端构构件的开发发,都有其其各自的特特点。代理可以用用于构建带带有隔离组组件的分布布式软件系系统,该软件通过远远程服务调调用进行交交互。代理理者负责协协调通信,,诸如转发请请求以及传传递结果和和异常等。。1991年,OMG基于面向对对象技术,,给出了以以对象请求求代理(ORB)为中心的的分布式应应用体系结结构。9.4分布式系统统结构代理在OMG的对象管理理结构中,,ORB是一个关键键的通信机机制,它以实实现互操作作性为主要要目标,处处理对象之之间的消息息分布。在ORB之上有4个对象接口口:(1)对象服务:定义加入入ORB的系统级服服务,如安安全性、命名和和事务处理理,它们是是与应用领领域无关的的。(2)公共设施:水平级的的服务,定定义应用程程序级服务务。(3)领域接口:面向特定定的领域。。(4)应用接口:面向指定定的现实世世界应用。。是指供应应商或用户借助于于ORB、公共对象象服务及公公共设施而而开发的特定产品。。9.4分布式系统统结构MVC框架即模型型—视图—控制器(model-view-controller)框架,它它强调将用用户输入、、数据模型型和数据表表示的方式式分开设计计,一个交交互式应用用系统由模型、视图和控制器3个部件组成成,分别对对应于内部部数据、数数据表示和和输入/输出控制部部分。9.5体系结构框框架MVC框架9.5体系结构框框架MVC框架1.模型对象模型对象独独立于外在在显示内容容和形式,,代表应用用领域中的的业务实体和和业务规则则,是整个模型的的核心。模型对象象的变化通过事件处处理通知视视图和控制制器对象。。2.视图对象视图对象代代表GUI对象,并且且以用户需需要的格式式表示模型型状态,是交交互系统与与外界的接接口。视图图对象可以以包含子视视图,子视图图用于显示示模型的不不同部分。。通常,每每个视图对对象对应一个控控制器对象象。9.5体系结构框框架3.控制器对象象控制器对象象代表鼠标标和键盘事事件。它处处理用户的的输入行为为并给模型型发送业务务事件,再再将业务事事件解析为为模型应执执行的动作作;同时,,模型的更更新与修改改也将通过过控制器来来通知视图图,从而保保持各个视视图与模型型的一致性性。9.5体系结构框框架9.5体系结构框框架MVC的处理过程程为:首先控制制器接收用用户的请求求,并决定定应该调用用哪个模型型来进行处处理;然后后模型用业业务逻辑来来处理用户户的请求并并返回数据据;最后控控制器用相相应的视图图格式化模模型返回的的数据,并并通过表示示层呈现给给用户。其中,模型型是核心数数据和功能能,视图只只关心显示示数据,控控制只关心心用户输入入,这种结结构由于将将数据和业业务规则从从表示层分分开,因此此可以最大大化地重用用代码。J2EE的核心体系系结构就是是在MVC框架的基础础上进行扩扩展得到的,如如下图所示示。9.5体系结构框框架J2EE体系结构框框架J2EE的核心体系系结构框架架客户层:用户通过过客户层与与系统交互互。该层可可以是各种种类型的客客户端。例例如,可编编程客户端端(如基于于JavaSwing的客户端或或applet),纯Web浏览器客户户端,WML移动客户端端等。资源层:资源层可可以是企业业数据库,,电子商务务解决方案案中的外部部企业系统统,或者是是外部SOA服务。数据据可以分布布在多个服服务器上。。从上图可看看出,J2EE模型是分层结构,中间的3层(表示层层,业务层层,集成层层)包含应应用程序构构件,客户户层和资源源层处于应应用程序的的外围。9.5体系结构框框架表示层:也称为Web层或服务器器端表示层层,用户通通过表示层层来访问应应用程序。。在基于Web的应用系统统中,表示示层由用户户界面代码码和运行于于Web服务器或应应用服务器器上的过程程组成。参参考MVC框架,表示示层包括视视图构件和和控制器构构件。业务层:业务层包含含表示层中中的控制器器构件没有有实现的一一部分应用用逻辑。它它负责确认认和执行企企业范围内内的业务规规则和事务务,并管理理从资源层层加载到应应用程序高高速缓存中中的业务对对象。集成层:集成层负责责建立和维维护与数据据源的连接接。例如,,通过JDBC与数据库进进行通信,,利用Java消息服务((JMS)与外部系系统联合。。9.5体系结构框框架1.PCMEF框架表示—控制—中介者—实体—基础(presentation-control-mediator-entity-foundation,PCMEF)是一个垂垂直层次的的分层体系系结构框架架。每一层层是可以包包含其他包包的包。PCMEF框架包含4层:表示层层、控制层层、领域层层和基础层层。领域层层包含两个个预定义包包:实体((entity)包和中介介者(mediator)包。PCMEF框架中包的依依赖性主要是是向下依赖性性。表示层依依赖于控制层层,控制层依依赖于领域层层,中介者包包依赖于实体体包和基础层层,如下图所示。PCMEF与PCBMER框架9.5体系结构框架架表示层:包含定义GUI对象的类。控制层:处理表示层的的请求,负责责大多数程序序逻辑、算法法、主要计算算以及为每个个用户维持会会话状态。领域层:其实体包处理理控制请求,中介者包用于于创建一个协协调实体类和和基础类的通通信通道。基础层:负责与数据库库和Web服务的所有通通信。9.5体系结构框架架PCMEF框架2.PCBMER框架PCBMER框架由PCMEF框架扩展而成成,代表着表示—控制器—Bean——中介者—实体—资源(presentation-control-bean-mediator-entity-resource,PCBMER)。其核心体体系结构框架架如右图所示示。9.5体系结构框架架PCBMER的核心框架在上图中,把把层表示为UML包(子系统,,层),带箭箭头的虚线表示依赖赖关系。例如如,表示层依依赖控制器层层和bean层,控制器层依赖bean层。PCBMER的层次不是严严格线性的,,上层可以依赖多个相相邻下层。bean层:表示那些预预先确定要呈呈现在用户界界面上的数据据类和值对象象。除了用户户输入外,bean数据由实体对对象(实体层层)创建。表示层:表示屏幕以及及呈现bean对象的UI对象。控制器层:表示应用逻逻辑。实体层:响应控制器和和中介者。中介者层:建立了充当实实体类和资源源类媒介的通通信管道。资源层:负责所有与与外部持久数数据资源(数数据库、Web服务等)的通通信。9.5体系结构框架架面向对象设计计模式最初出出现于70年代末80年代初。ErichGamma等4人合著的“DesignPatterns:ElementsofReusableObject-OrientedSoftware”被认为是设计计模式方面的的经典著作。。目前,设计模模式已经被广广泛应用于多多种领域的软软件设计和构构造中,许多多当代的先进进软件中已大大量采用了软软件设计模式式的概念。9.6设计模式9.6设计模式一般来说,一一个模式有4个基本的要素素:模式名称:用于描述模模式的名字,,说明模式的的问题、解决决方案和效果果。问题:说明在何种种场合使用模模式。解决方案:描述设计的的组成成分、、它们之间的的相互关系、、各自的职责责和合作方式式。效果:描述了模式式使用的效果果及使用模式式应当权衡的的问题。抽象工厂(1)目的:提供一一个接口用以以创建一个相相联系或相依依赖的对象族族,而无须指指定它们的具具体类。(2)思路:例如,,在创建可支支持多种GUI标准(如Motif和PersentationManager)的绘图用户户界面工具包包时,因为不不同的GUI标准会定义出出不同外观及及行为的“用用户界面组件件”(widget),如滚动条条、按钮、视视窗等。为了了能够囊括各各种GUI标准,应用程程序不能把组组件写死,不不能限制到特特定GUI风格的组件类类,否则日后后很难换成其其他GUI风格的组件。。抽象工厂解决方法是::先定义一个个抽象类WidgetFactory(用斜体字区区分抽象类)),这个类声声明了创建各各种基本组件件的接口,再再逐一替各种种基本组件定定义相对应的的抽象类,如如ScrollBar、Window等,让它们的的具体子类来来真正实现特特定的GUI标准。抽象工厂可支持多种GUI标准的绘图用用户界面工具具包的结构图图抽象工厂(3)结构:抽象工工厂模式的结结构如图所示示。抽象工厂(4)参与者职责a)抽象工厂类((AbstractFactory):声明创建建抽象产品对对象的操作的的接口。b)具体工厂类((ConcreteFactory):实现产生生具体产品对对象的操作。。c)抽象产品类((AbstractProduct):声明一种种产品对象的的接口。d)具体产品类((ConcreteProduct):定义将被被相应的具体体工厂类产生生的产品对象象,并实现抽抽象产品类接接口。e)客户(Client):仅使用由由抽象工厂类类和抽象产品品类声明的接接口。抽象工厂(5)协作在执行时,AbstractFactory将产品交给ConcreteFactory创建。ConcreteFactory类的实例只有有一个,专门门针对某种特特定的实现标标准,建立具具体可用的产产品对象。如果想要建立立其他标准的的产品对象,,客户程序就就得改用另一一种ConcreteFactory。单件(1)目的:一个类类只有一个实实例并提供一一个访问它的的全局访问点点。该实例应应在系统生存存期中都存在在。(2)思路:例如,,通常情况下下,用户可以以对应用系统统进行配置,,并将配置信信息保存在配配置文件中,,应用系统在在启动时首先先将配置文件件加载到内存存中,这些内内存配置信息息应该有且仅仅有一份。应应用单件模式式可以保证Configure类只能有一个个实例。单件(3)结构:单件模模式的结构如如图所示。单件(4)参与者职责a)单件(Singleton):能够创建建它唯一的实实例;同时定定义了一个Instance操作,允许外外部存取它唯唯一的实例。。Instance是一个静态成成员函数(5)协作:客户只只能通过Singleton的Instance()存取这唯一的的实例。外观(1)目的:给子系系统中的一组组接口提供一一套统一的高高层界面,使使得子系统更更容易使用。。(2)思路:将系统统划分为若干干子系统,虽虽然可以降低低整体的复杂杂性,但还需需设法降低子子系统之间的的通信和相互互的依赖性。。一种方法就就是引进一个个外观(facade)对象,为子子系统内各种种设施提供一一个简单的单单一界面。外观(3)结构:外观模模式的结构如如图所示。外观(4)参与者职责a)外观(Façade):知道子系系统中哪个类类负责处理哪哪种信息;并并负责把外界界输入的信息息转交给适当当的子系统对对象。b)子系统中的类类(subsystemclasses):实现子系系统的功能;;处理Facade对象分派的工工作;如果不不受Facade的控制,则也也不会有返回回Facade的引用存在。。(5)协作:使用Facade的客户不用直直接访问子系系统对象。外外界想与子系系统交互时,,把信息传送送给Facade,Facade再把这些信息息转交给适当当的子系统对对象。虽然实实际处理工作作是子系统对对象在做,但但Facade会居中做接口口转换工作。。适配器(1)目的:适配器器模式将一个个类的接口转转换为客户期期望的另一种种接口,使得得原本不匹配配的接口而无无法合作的类类可以一起工工作。(2)思路:有时要要将两个没有有关系的类组组合在一起使使用,一种解解决方案是修修改各自类的的接口,另一一种办法是使使用Adapter模式,在两种种接口之间创创建一个混合合接口。例如如,,设设有有一一个个图图形形编编辑辑器器,,可可画画直直线线、、多多边边形形、、文文本本等等。。它它的的接接口口定定义义成成抽抽象象类类Shape,它它的的子子类类负负责责画画各各种种图图形形。。此此外外,,还还有有一一个个外外购购的的GUI软件件包包TextView,用用于于显显示示,,但但它它没没有有Shape功能能。。适配配器器如何何让让TextView的接接口口转转换换成成为为Shape的接接口口,,有有两两种种方方法法::让TextShape同时时继继承承Shape的接接口口和和TextView的服服务务((多多重重继继承承));;在TextShape中建建立立TextView的实实例例,,再再通通过过TextView给出出TextShape的接接口口。。前者者是是适适配配器器的的类类模模式式,,后后者者是是对对象象模模式式。。下下图图就就是是适适配配器器的的对对象象模模式式。。适配配器器(3)结构构::适适配配器器模模式式有有类类适适配配器器模模式式和和对对象象适适配配器器模模式式。。类类适适配配器器可可以以通通过过多多继继承承方方式式实实现现不不同同接接口口之之间间的的相相容容和和转转换换,,如如图图所所示示。。适配配器器而一一个个对对象象适适配配器器则则依依赖赖对对象象组组合合的的技技术术实实现现接接口口的的相相容容和和转转换换,,如如图图所所示示。。适配器(4)参与者职职责a)目标(Target):定义义客户使使用的与与应用领领域相关关的接口口。b)客户(Client):与具具有Target接口的对对象合作作。c)被匹配者者(Adaptee):需要要被转换换匹配的的一个已已存在接接口。d)适配器((Adapter):将Adaptee的接口与与Target接口匹配配。适配器(5)协作:客客户调用用Adapter对象的操操作,然然后Adapter的操作又又调用Adaptee对象中负负责处理理相应请请求的操操作。责任链(1)目的:通通过一条条隐式的的对象消消息链传传递处理理请求。。该请求求沿着这这条链传传递,直直到有一一个对象象处理它它为止。。其核心心是避免免将请求求的发送送者直接接耦合到到它的接接受者。。(2)思路:以以GUI系统的联联机帮助助系统为为例。用用户可以以在软件件中任一一位置按按下help键,软件件就可以以根据该该信息和和当前上上下文环环境弹出出适当的的说明。。如果用户户在PrintDialog对话框里里“打印印”按钮钮上按了了帮助键键,帮助助信息的的顺序图图如图所所示。责任链联机帮助助系统定定义了一一个抽象象类HelpHandler和抽象操操作HandleHelp(),所有想想处理信信息的类类可以继继承该类类。HelpHandler的HandleHelp()操作的内内定做法法是把信信息传递递给后继继者去处处理,由由各个子子类分别别来实现现具体的的打印功功能。如如图所示示。责任链(3)结构:责责任链模模式的结结构如图图所示。。责任链典型的对对象间的的结构如如图所示示。责任链(4)参与者职职责a)处理者((Handler):定义义处理请请求的接接口;实实现对后后继者的的链接((可选))。b)具体处理理者(ConcreteHandler):处理理它所负负责的请请求;可可访问它它的后继继;如果果它能够够处理请请求,就就处理该该请求,,否则将将请求传传送给后后继者。。c)客户(Client):将处处理请求求提交给给职责链
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论