软件设计模式与体系结构复习资料Word格式.docx
- 文档编号:17539544
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:10
- 大小:24.50KB
软件设计模式与体系结构复习资料Word格式.docx
《软件设计模式与体系结构复习资料Word格式.docx》由会员分享,可在线阅读,更多相关《软件设计模式与体系结构复习资料Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
4.设计模式分类:
按照目的可以分为:
创建型、结构型、行为型按照范围可以分为:
类模式、对象模式
5.模式和框架的区别:
1)设计模式比框架更抽象
2)设计模式是比框架更小的体系结构元素
3)框架比设计模式更加特例化
创建型模式:
1.创建型模式包括抽象工厂模式、生成器模式、工厂模式、原型模式、单件模式
2.创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象
3.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。
4.随着系统演化地越来越依赖于对象复合而不是类继承,创建型模式变得更为重要
5.创建型模式在什么被创建、谁创建它、它是怎样被创建的以及何时创建这些方面给予很大的灵活性
6.抽象工厂模式:
意图:
提供一个创建一系列相关或相互依赖对象的接口而不需要指定他们具体的类
别名:
KIT
适用性:
1)一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节
2)这个系统的产品有多余一个的产品族,而系统只消费其中某一个族的产品
3)同属于一个产品族的产品是在一起使用的
4)系统提供一个产品类的库,所有产品以同样的接口实现,从而使客户端不依赖于实现
参与者:
抽象工厂角色(核心)、具体工厂(在客户端的调用下创建实例)、抽象产品(所拥有的共同接口)、具体产品
效果:
1)分离了具体的类
2)使得易于交换产品系列
3)有利于产品的一致性
4)难以支持新种类的产品
实现:
1)将工厂作为一个单件2)创建产品3)定义可扩展的工厂
相关:
AbstractFactory类通常用工厂方法实现,一个具体工厂通常是一个单件
工厂方法模式:
定义一个用于创建对象的接口,让子类决定实例化哪个类。
FactoryMethod使一个类的实例化延迟到其子类
虚构造器
1)当一个类不知道它所必须创建的对象的类的时候
2)当一个类希望由他的子类来指定他所创建的对象的时候
1)多态性:
客户代码可以做到与特定应用无关,适用于任何实体类
2)子类提供挂钩。
基类为工厂方法提供缺省实现,子类可以重写新的实现,也可以继承父类的实现。
--加一层间接性,增加了灵活性
3)封装性好,扩展性好,屏蔽产品类
4)需要Creator和相应的子类作为factorymethod的载体,如果应用模型确实需要creator和子类存在,则很好;
否则的话,需要增加一个类层次
单件模式:
保证一个类有且只有一个实例,并提供一个访问它的全局访问点
1)当类只能有一个实例而且客户可以从一个众所周知的访问点访问它
2)当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展类的实例
优点:
1)对唯一实例的受控访问
2)缩小名空间
3)允许对操作和表示的精化
4)比类操作更灵活
使用单件模式的要点:
单件模式中的实例构造器可以设置为protected以允许子类派生;
单件模式只考虑到了对象创建的管理,没有考虑对象销毁的管理。
保证一个唯一的实例;
创建单件类的子类
//本质:
内存中只能有一个对象
//案例:
定时器,计数器
//使用场景:
一个项目只要一个共享访问点和共享数据;
创建对象消耗资源比较多,如IO操作和数据库读取
//注意:
线程安全
publicsealedclassSingleton
{
privatestaticSingleton_singleton=null;
privatestaticreadonlyobject_synLock=newobject();
privateSingleton(){}
publicstaticSingletonGetInstance()
{
lock(_synLock)
if(_singleton==null)
_singleton=newSingleton();
return_singleton;
}
}
}
结构型模式:
1.结构型模式涉及到如何组合类和对象以获得更大的结构。
2.结构型类模式采用继承机制来组合接口或者实现。
3.结构型模式包括:
适配器模式(类对象)、组合模式(对象)、装饰模式(对象)
4.适配器模式:
将一个类的接口转化为客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能够在一起工作的类可以一起工作
包装器
1)想使用一个已经存在的类,但接口不符合需要
2)想创建一个可复用的类,该类可以和其他不相关的类和不可预见的类协同工作
3)想使用一些已经存在的类,但不可能对每一个都子类化以匹配他们的接口,对象适配器可以可以适配他们的父类接口
结构:
类适配器(使用多重继承)对象适配器(使用对象组合)
类适配器:
1)用一个具体的类适配Adaptee和Target,当想要匹配一个类及他的子类的时候,类Adapter将不再适用
2)Adapter可以重新定义Adaptee的部分方法
3)仅仅引入了一个对象,不需要额外的指针
对象适配器:
1)允许Adapter和一个或者多个Adaptee进行适配,Adapter可以一次性给多个Adaptee添加功能
2)使得重新定义Adaptee的部分希望变得困难
注意事项:
1)Adapter的匹配程度
2)可插入的Adapter
3)使用双向适配器通过透明操作
可插入的适配器的实现方法:
使用抽象操作、使用代理对象、参数化的适配器
组合模式:
将对象组合成数结构以表示“整体—部分”结构,组合模式使得用户对单个对象和组合对象的使用具有一致性
1)想表示对象的“整体—部分”的结构
2)希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的对象
1)通过递归组合,在客户端代码中,任何用到基本对象的地方都可以使用组合对象
2)简化客户代码,客户可以一致地使用组合结构和单个对象
3)使得更容易添加新类型的组件
4)设计一般化,由于容易添加新组件,也将容易带来新问题
装饰模式:
动态地给一些对象添加一些额外的职责。
包装器模式
1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
2)处理那些可以撤销的职责
3)当不能采用生成子类的方法进行扩充时。
1)比静态继承更灵活
2)避免在层次结构高层的类有太多的特征
3)Decorator余它的Component不一样
4)有许多小对象
使用注意事项:
1)接口的一致性2)省略抽象的Decorator类3)保持Component类的简单性
行为模式:
迭代器模式:
提供一种方法顺序访问一个集合对象中的各个元素,而不暴露该对象的内部表示
游标
适应性:
1)访问一个聚合对象的内容而无需暴露它的内部表示
2)支持对聚合对象的多重遍历
3)支持多重迭代
1)它支持以不同的方式遍历一个聚合
2)简化了聚合的接口
3)在同一个聚合上可以有多个遍历
观察者模式:
定义对象间的一对多的关系,当一个对象的状态发生变化时,所有依赖于他的对象都得到通知并被自动更新
依赖,发布——订阅
1)当一个抽象模式有两个方面,其中一个方面依赖于另一个方面,将这二者封装在独立的对象中以使它们可以各自独立地改变及复用
2)当对一个对象的改变需要同时改变其他对象,而不知道有多少对象有待改变
3)当一个对象必须通知其他对象,但又不能假定其他对象是谁
1)目标和观察者间的抽象耦合
2)支持广播通信
3)意外的更新
状态模式:
允许一个对象在其内部状态发生改变时改变了它的询问,对象看起来似乎改变了它的类
状态对象
1)一个对象的行为取决于他的状态,并且它必须在运行时刻根据状态改变它的行为
2)一个操作中含有庞大的多分支语句,并且这些分支依赖于该对象的状态
1)将有特定效果的行为局部化,并将不同状态的行为分割开来
2)使得状态转换显示化
3)State对象可被共享
体系结构:
定义:
软件体系结构包括构成系统的设计元素的描述,设计元素的交互,设计元素组合的模式,以及这些模式中的约束。
意义:
1)体系结构是风险承担者进行交流的手段
2)体系结构有助于系统级关注点的理解
3)体系结构是早期设计决策的体现
4)软件体系结构是可传递和可重用的模型
作用:
软件系统的体系结构定义系统由计算构件和构件之间的相互作用组成;
体系结构还指出了系统需求和已构建系统的元素之间的对应关系,能为设计方案的选择提供基本原则。
研究内容:
1)通过提供一种新的体系结构描述语言(ArchitecturalDescriptionLanguage)解决体系结构描述问题
2)体系结构领域知识的总结性研究。
3)针对特定领域的框架的研究。
4)软件体系结构形式化支持的研究。
框架、体系结构、设计模式三者的比较:
1)设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,比框架更抽象;
2)框架可用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示
3)设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种不同的应用。
4)体系结构风格描述了软件系统的整体组织结构,它独立于实际问题。
而设计模式和应用框架更加面向具体问题。
常见的体系结构的优缺点:
两层C/S结构:
1)强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。
2)硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小
3)大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。
缺点:
开发成本较高、客户端程序设计复杂、信息内容和形式单一、用户界面风格不一、软件移植困难、软件维护和升级困难、新技术不能轻易应用
三层C/S结构:
优点:
1)允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性
2)允许更灵活有效地选用相应的平台和硬件系统。
并且这些平台和各个组成部分可以具有良好的可升级性和开放性。
3)应用的各层可以并行开发
4)为严格的安全管理奠定了坚实的基础
1)三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能
2)设计时必须慎重考虑三层间的通信方法、通信频度及数据量。
这和提高各层的独立性一样是三层C/S结构的关键问题。
B/S结构:
1)基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决,达到了“零客户端”的功能,很容易在运行时自动升级。
2)B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础
1)B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能
2)B/S体系结构的系统扩展能力差,安全性难以控制。
3)采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构
4)数据的动态交互性不强,不利于在线事务处理(OLTP)应用
C/S与B/S混合之“内外有别”模型:
外部用户不直接访问数据库服务器,能保证企业数据库的相对安全;
企业内部用户的交互性较强,数据查询和修改的响应速度较快
企业外部用户修改和维护数据是速度较慢,较烦琐,数据的动态交互性不强
C/S与B/S混合之“查改有别”模型:
优点体现了B/S体系结构和C/S体系结构的共同优点,即B/S对客户端要求不高,只需要查询的客户端只要安装浏览器即可,提供了开放性,实现修改的终端和服务器之间采取C/S结构。
外部用户能直接通过Internet连接到数据库服务器,企业数据容易暴露给外部用户,给数据安全造成了一定的威胁
体系结构案例:
1.名称:
上下文关键字
解决方案:
1)基于功能分解,可以共享访问数据表示;
2)基于隐藏设计决策的分解
2.名称:
仪器软件
1)改进后的管道过滤器模型
2)专用化模型
3.名称:
移动机器人
1)控制环路
2)分层体系结构
3)隐式调用
4)黑板体系结构
体系结构评估方法:
1)SAAM(软件架构分析方法)
体系结构的描述、场景的形成、场景的分类和优先级的确定、对间接场景的单个评估、场景相互作用的评估、形成总体评估
2)ATAM(体系结构权衡分析方法)
步骤:
1)描述:
描述ATAM方法描述商业动机、描述体系结构
2)调查与分析:
确定体系结构方法、生成质量属性效用树、分析体系结构方法
3)测试:
集体讨论并确定场景优化级分析架构方法
4)形成报告:
描述评估结果
1.评估所关注的属性:
性能、可靠性、可用性、安全性、可修改性、功能性、可变性、可继承性、互操作性
2.在体系结构中,一般采用刺激、环境、响应来描述场景
3.主要的评估方式:
调查问卷、基于场景、基于度量
4.ATAM的场景:
用例场景、成长场景、考察场景。
5.SAAM的场景:
直接场景、间接场景。
流行的软件体系结构:
1.分布式构件技术:
CORBA规范、Sun的Java平台、Microsoft的.NET平台
2.分布式构件体系结构:
J2EE、.NET
3.J2EE:
使用多层分布式应用模型,最基本的Java构件是在J2ME中的JavaBean,JavaBean包括实例变量(InstanceVariable)和get()、set()方法来访问实例变量的数据。
4.J2EE构件:
客户端构件、Web构件、业务逻辑构件
5.EJB构件:
远程接口、本地接口、BEAN类,EJB容器为EJB构件提供事务管理、持久性、安全性和并发控制等系统服务。
6.面向服务的体系结构的特征:
松散耦合、位置透明、协议独立
7.SOA中的角色:
服务消费者、服务提供者、服务注册中心
8.Web服务核心技术:
XML、简单对象访问协议(SOAP)、Web服务描述语言(WSDL)、统一描述、发现和集成协议(UDDI)
COM:
为代码的重用提供了一种模块化、面向对象的方式、定义了定位和识别其他组件功能的标准方式、是微软平台上所有构件的基石。
9.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 模式 体系结构 复习资料
![提示](https://static.bdocx.com/images/bang_tan.gif)