第7章-软件体系结构风格与设计模式课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第7章-软件体系结构风格与设计模式课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 风格 设计 模式 课件
- 资源描述:
-
1、基本概念基本概念n软件设计模式:软件设计模式:广义定义:可解决一类软件问题并能重广义定义:可解决一类软件问题并能重复使用的软件设计方案复使用的软件设计方案狭义定义:设计模式是对被用来在特定狭义定义:设计模式是对被用来在特定场景下解决一般设计问题的类和相互通场景下解决一般设计问题的类和相互通信的对象的描述。是在类和对象的层次信的对象的描述。是在类和对象的层次描述的可重复使用的软件设计问题解决描述的可重复使用的软件设计问题解决方案。方案。基本概念基本概念n软件体系结构风格:是在构件和连接子的层次所描软件体系结构风格:是在构件和连接子的层次所描述的可重复使用的软件设计问题解决方案。述的可重复使用的软
2、件设计问题解决方案。基本概念基本概念n二者的共性和区别:二者的共性和区别:区别:区别:1 1、设计模式是在类和对象的层次描述问题,、设计模式是在类和对象的层次描述问题,粒度较小;粒度较小;2 2、体系结构风格是在构件和连接子的层次描、体系结构风格是在构件和连接子的层次描 述问题,粒度较大。体系结构风格是广义述问题,粒度较大。体系结构风格是广义 上的设计模式。上的设计模式。共性:都是可重复使用的软件设计问题解决方案共性:都是可重复使用的软件设计问题解决方案n软件体系结构描述语言软件体系结构描述语言Architectural Description LanguageArchitectural De
3、scription Language,简称,简称ADLADL是用来描述软件密集型系统的总体结构的语言,说明是用来描述软件密集型系统的总体结构的语言,说明系统众多部件之间的结构关系。系统众多部件之间的结构关系。n代表性的体系结构描述语言代表性的体系结构描述语言nWrightWrightnRapideRapidenDarwinDarwinnUniconUniconnACMEACMEnABC/ADLABC/ADLnXYZ/ADLXYZ/ADLnXADLXADL大部分结构描述语言都有构件、连接子、配置等概念大部分结构描述语言都有构件、连接子、配置等概念nWright ADLWright ADL构件(构
4、件(ComponentComponent)连接子(连接子(ConnectorConnector)端口(端口(PortsPorts)构件规范(构件规范(Component-specComponent-spec)计算(计算(ComputationComputation)配置(配置(ConfigurationConfiguration)角色(角色(RolesRoles)粘连(粘连(GlueGlue)实例(实例(InstancesInstances)联接(联接(AttachmentsAttachments)Wright ADLWright ADLn过程调用实例:过程调用实例:一个一个CallerCal
5、ler类型的构件类型的构件c c通过通过D-C-connectorD-C-connector类型类型的的 连接子连接子dcdc调用调用DefinerDefiner类型的构件类型的构件d d c 调用调用 d调用实例的调用实例的Wright体系结构描述体系结构描述图形化的体系结构描述语言图形化的体系结构描述语言GADLGADLnGADLGADL的元模型的元模型图形化的体系结构描述语言图形化的体系结构描述语言GADLGADL调用实例的调用实例的GADLGADL体系结构描述体系结构描述构件图构件图构件构件连接子连接子端口端口角色角色图形化的体系结构描述语言图形化的体系结构描述语言GADLGADL调用
6、实例的调用实例的GADLGADL体系结构描述体系结构描述类图类图图形化的体系结构描述语言图形化的体系结构描述语言GADLGADLn一个图形化的体系结构描述语言一个图形化的体系结构描述语言GADLGADL调用实例的调用实例的GADLGADL体系结构描述体系结构描述协议类图和顺协议类图和顺序图序图WrightWright与与GADLGADLnGADLGADL语言用构件图、类图、顺序图等方式描述系语言用构件图、类图、顺序图等方式描述系统的软件体系结构,对行为的描述统的软件体系结构,对行为的描述GADLGADL用顺序图用顺序图,而,而WrightWright用进行代数用进行代数CSPCSP。n在构件和
7、连接子的层次上描述的可重复使用的软在构件和连接子的层次上描述的可重复使用的软件设计问题解决方案。件设计问题解决方案。1.1.管道管道/过滤器风格过滤器风格2.2.层次风格层次风格3.3.客户客户/服务器风格服务器风格核心特征、应用场景、注意的问题核心特征、应用场景、注意的问题(1 1)管道)管道/过滤器风格过滤器风格n实例剖析:实例剖析:统计统计a.txta.txt中单词的个数并打印出来:中单词的个数并打印出来:shellshell命令:命令:“cat a.txt|wc-w|lpr”cat a.txt|wc-w|lpr”1、cat命令输出命令输出a.txt的内容的内容2、通过管道传给命令、通过
8、管道传给命令wc,统计输入流中单词的,统计输入流中单词的 个数并输出个数并输出3、输出的单词数通过管道传给命令、输出的单词数通过管道传给命令lpr,lpr将其将其 打印出来打印出来 构件图构件图命令是构件、管道是连接子命令是构件、管道是连接子(1 1)管道)管道/过滤器风格过滤器风格n实例剖析:实例剖析:shellshell命令:命令:“cat a.txt|wc-w|lpr”cat a.txt|wc-w|lpr”类类图图(1 1)管道)管道/过滤器风格过滤器风格n实例剖析:实例剖析:shellshell命令:命令:“cat a.txt|wc-w|lpr”cat a.txt|wc-w|lpr”W
9、riteData协议类图和顺序图协议类图和顺序图(1 1)管道)管道/过滤器风格过滤器风格n实例剖析:实例剖析:shellshell命令:命令:“cat a.txt|wc-w|lpr”cat a.txt|wc-w|lpr”ReadData协议类图和顺序图协议类图和顺序图(1 1)管道)管道/过滤器风格过滤器风格n实例剖析:实例剖析:打印打印a.txta.txt中中softsoft的个数的个数“cat a.txt|grep-o soft|wc-w|lpr”cat a.txt|grep-o soft|wc-w|lpr”构件图构件图(1 1)管道)管道/过滤器风格过滤器风格n特征:系统中构件之间通过
10、数据流松散耦合。也特征:系统中构件之间通过数据流松散耦合。也就是说,构件之间的依赖仅仅是数据流,而不是就是说,构件之间的依赖仅仅是数据流,而不是通常的接口函数调用或消息传递。通常的接口函数调用或消息传递。n其他典型应用:编译器、信号处理等。其他典型应用:编译器、信号处理等。n其他说明:本模式在实现上可以有许多不同的变其他说明:本模式在实现上可以有许多不同的变化,如主动与被动、多出口管道等。化,如主动与被动、多出口管道等。(2 2)层次风格)层次风格n实例剖析:数据库系统实例剖析:数据库系统用户接口(查询、创建等)用户接口(查询、创建等)数据库管理数据库管理数据库文件(文件管理功能)数据库文件(
11、文件管理功能)文件管理文件管理外部设备(设备管理功能)外部设备(设备管理功能)设备管理设备管理(2 2)层次风格)层次风格n实例剖析:数据库系统实例剖析:数据库系统数据库服务端口数据库服务端口db(2 2)层次风格)层次风格n特征:从向外提供服务的构件出发,沿着连接关特征:从向外提供服务的构件出发,沿着连接关系递次搜索各构件和连接子,如果形成的拓扑结系递次搜索各构件和连接子,如果形成的拓扑结构是一个有向无圈图(典型情况下是一个线性结构是一个有向无圈图(典型情况下是一个线性结构),那么这个系统的体系结构风格就是层次式构),那么这个系统的体系结构风格就是层次式的。的。n这种设计风格便于将复杂的系统
12、进行分解;同时这种设计风格便于将复杂的系统进行分解;同时也便于构件替换:只要保持接口一致,就可以将也便于构件替换:只要保持接口一致,就可以将某一层的软件替换掉,而不会影响到系统的其他某一层的软件替换掉,而不会影响到系统的其他部分。部分。(2 2)层次风格)层次风格n其他典型应用:开放系统互联(其他典型应用:开放系统互联(OSIOSI)七层网络模)七层网络模型、型、Windows NTWindows NT操作系统的内核结构。操作系统的内核结构。(2 2)层次风格)层次风格n其他说明:其他说明:优点是结构清晰、可替换性好、便于控制复杂优点是结构清晰、可替换性好、便于控制复杂性;性;但也有它的缺点,
13、如效率低:分层结构中高层但也有它的缺点,如效率低:分层结构中高层的数据要经过层层传递和转发,从而降低系统的数据要经过层层传递和转发,从而降低系统效率。效率。(3 3)客户)客户/服务器风格服务器风格n实例剖析:实例剖析:FTPFTP系统系统(3 3)客户)客户/服务器风格服务器风格n特征:从向外提供服务的构件出发,沿着连接关特征:从向外提供服务的构件出发,沿着连接关系递次搜索各构件和连接子,如果形成的拓扑结系递次搜索各构件和连接子,如果形成的拓扑结构是一棵倒置的树,那么这个系统的体系结构就构是一棵倒置的树,那么这个系统的体系结构就是客户是客户/服务器风格的。服务器风格的。n这种风格使得服务功能
14、的实现很集中,便于系统这种风格使得服务功能的实现很集中,便于系统实现,因而得到广泛使用。实现,因而得到广泛使用。(3 3)客户)客户/服务器风格服务器风格n其他典型应用:电子邮件系统、其他典型应用:电子邮件系统、WWWWWW系统、系统、TELNETTELNET系统、系统、CVSCVS版本控制系统等版本控制系统等数据库服务器可以向多个浏数据库服务器可以向多个浏览器实例提供服务、还可以览器实例提供服务、还可以向向CVS系统提供服务。系统提供服务。(3 3)客户)客户/服务器风格服务器风格n其他说明:在客户其他说明:在客户/服务器风格的系统中,服务器是资源服务器风格的系统中,服务器是资源和计算的集中
15、地,因此容易成为存储和计算瓶颈,实际应和计算的集中地,因此容易成为存储和计算瓶颈,实际应用中为了提高服务器的性能,可能要采用集群处理等办法用中为了提高服务器的性能,可能要采用集群处理等办法。同时,这个特点也使得这类系统容易遭受拒绝服务(。同时,这个特点也使得这类系统容易遭受拒绝服务(Deny Of ServiceDeny Of Service)攻击,因此在设计和应用中要作针对)攻击,因此在设计和应用中要作针对性考虑。性考虑。n此外,在这种风格的系统中,服务器中往往要存储更多客此外,在这种风格的系统中,服务器中往往要存储更多客户的状态信息,因此大量使用并发执行技术,如多进程、户的状态信息,因此大
16、量使用并发执行技术,如多进程、多线程等,这也就涉及到进程、线程的动态创建、调度、多线程等,这也就涉及到进程、线程的动态创建、调度、删除等问题。这些问题处理得好坏直接影响到服务器的性删除等问题。这些问题处理得好坏直接影响到服务器的性能。能。n文献文献7-27-2中描述了中描述了2323个设计模式,并将它们分为个设计模式,并将它们分为三种类型:创建型设计模式、结构型设计模式和三种类型:创建型设计模式、结构型设计模式和行为型设计模式。行为型设计模式。1.1.Factory MethodFactory Method(工厂方法)(工厂方法)2.2.Abstract FactoryAbstract Fac
17、tory(抽象工厂)(抽象工厂)3.3.SingletonSingleton(单件)(单件)4.4.CompositeComposite(组合)(组合)5.5.ProxyProxy(代理)(代理)6.6.IteratorIterator(迭代器)(迭代器)7.7.Observer Observer(观察者)(观察者)动机和实例、应用场合、结构、核心思想动机和实例、应用场合、结构、核心思想(1)Factory Method(1)Factory Methodn动机与实例:动机与实例:“龙珠龙珠”游戏游戏魔力管道:魔力管道:弹球(弹球(pop)制造球(制造球(Enchant)球球(1)Factory
18、 Method(1)Factory Methodn动机与实例:动机与实例:“龙珠龙珠”游戏游戏-设计设计1 1球有多种,如皮球、钢球球有多种,如皮球、钢球BallBall抽象父类抽象父类BallBall无法被实例化无法被实例化?(1)Factory Method(1)Factory Methodn动机与实例:动机与实例:“龙珠龙珠”游戏游戏-设计设计2 2new Ballnew Ball动作包装成虚函数动作包装成虚函数MakeBallFactoryMethodMakeBallFactoryMethod在子类(描述各种魔力管道)中重新定义该虚函数在子类(描述各种魔力管道)中重新定义该虚函数(1)
19、Factory Method(1)Factory Methodn适用场合:有一些实体(各种魔力管道),它们适用场合:有一些实体(各种魔力管道),它们的结构和行为是相似的,且都包含一些相似的更的结构和行为是相似的,且都包含一些相似的更小实体(各类球),但一个大实体内部的这些小小实体(各类球),但一个大实体内部的这些小实体都是同一类的(一种魔力管道内只有一种球实体都是同一类的(一种魔力管道内只有一种球)。此时,如果各类小实体的描述构成一个类层)。此时,如果各类小实体的描述构成一个类层次,那么可使用次,那么可使用Factory MethodFactory Method模式,将各类大模式,将各类大实体
20、也描述为一个类层次。实体也描述为一个类层次。(1)Factory Method(1)Factory Methodn结构:结构:(1)Factory Method(1)Factory Methodn核心思想归纳:在父类中,将创建对象的操作包核心思想归纳:在父类中,将创建对象的操作包装为一个虚函数,在描述公共行为的过程中调用装为一个虚函数,在描述公共行为的过程中调用该函数;在子类中重定义该虚函数来定制创建的该函数;在子类中重定义该虚函数来定制创建的对象,从而间接定制公共行为。利用虚函数的多对象,从而间接定制公共行为。利用虚函数的多态机制,态机制,Factory MethodFactory Meth
21、od模式使得父类可集中描模式使得父类可集中描述公共行为,而将特别行为(不同对象的创建)述公共行为,而将特别行为(不同对象的创建)抽放于子类。抽放于子类。(2)(2)Abstract FactoryAbstract Factoryn动机与实例:魔力管道。动机与实例:魔力管道。在前面的设计中,三个在前面的设计中,三个MakeBallFactoryMethodMakeBallFactoryMethod工厂方法散放在三个工厂方法散放在三个MagicPipeMagicPipe类中。为了降低复类中。为了降低复杂性,可以把所有的创建动作拆分出来单独考虑杂性,可以把所有的创建动作拆分出来单独考虑。即:创建球的
22、动作单独形成一个工厂类,专门创即:创建球的动作单独形成一个工厂类,专门创建对象。建对象。(2)(2)Abstract FactoryAbstract Factoryn动机与实例:设计动机与实例:设计3 3(2)(2)Abstract FactoryAbstract Factoryn动机与实例:设计动机与实例:设计4 4不仅有球、还有盒子等小实体,不仅有球、还有盒子等小实体,抽象工厂类专门创建各种小实体抽象工厂类专门创建各种小实体(2)(2)Abstract FactoryAbstract Factoryn动机与实例:设计动机与实例:设计5 5混合管道和小实体混合管道和小实体(2)(2)Abst
23、ract FactoryAbstract Factoryn适用场合:当需要创建一组多种风格的小实体、适用场合:当需要创建一组多种风格的小实体、且具体创建方式又要灵活可调整时,可使用且具体创建方式又要灵活可调整时,可使用Abstract FactoryAbstract Factory模式,将公共的创建行为描述模式,将公共的创建行为描述为一个抽象类,而将具体的创建方式用该抽象类为一个抽象类,而将具体的创建方式用该抽象类的子类来描述。的子类来描述。(2)(2)Abstract FactoryAbstract Factoryn结构:结构:(2)(2)Abstract FactoryAbstract F
展开阅读全文