文章目录
- 前言
- [🌍 第1章--引言](#🌍 第1章--引言)
- [🌍 第2章--软件模型和描述](#🌍 第2章--软件模型和描述)
- [❄️2.5.1 ADL简介](#❄️2.5.1 ADL简介)
- [❄️2.5.2 典型的ADL简介](#❄️2.5.2 典型的ADL简介)
- 🌍第3章--软件体系结构建模和UML
- [❄️3.1 软件体系结构建模概述](#❄️3.1 软件体系结构建模概述)
- [❄️3.4.1 基本概念(面向对象)](#❄️3.4.1 基本概念(面向对象))
- [❄️3.6 UML中行为建模](#❄️3.6 UML中行为建模)
- [3.6.1 用例图](#3.6.1 用例图)
- [🌍 第4章--软件设计过程](#🌍 第4章--软件设计过程)
- [❄️4.2 软件体系结构设计方法](#❄️4.2 软件体系结构设计方法)
- [❄️4.3.1 可信软件](#❄️4.3.1 可信软件)
- [❄️4.7 思考题](#❄️4.7 思考题)
- [🌍 第5章--软件体系结构风格](#🌍 第5章--软件体系结构风格)
- [❄️ 5.2.1 管道 - 过滤器](#❄️ 5.2.1 管道 - 过滤器)
- [❄️5.2.5 仓库风格和黑板风格](#❄️5.2.5 仓库风格和黑板风格)
- [❄️5.2.6 模式 - 视图 - 控制器](#❄️5.2.6 模式 - 视图 - 控制器)
- [❄️5.2.7 解释器风格](#❄️5.2.7 解释器风格)
- [❄️5.4 客户/服务器](#❄️5.4 客户/服务器)
- [❄️5.5 三层C/S体系结构风格](#❄️5.5 三层C/S体系结构风格)
- [❄️5.8.2 正交软件体系结构的优点](#❄️5.8.2 正交软件体系结构的优点)
- [🌍 第6章--面向对象方法](#🌍 第6章--面向对象方法)
- [❄️6.2.1 面向对象系统开发过程](#❄️6.2.1 面向对象系统开发过程)
- [❄️6.3 图书管理系统用例图★](#❄️6.3 图书管理系统用例图★)
- [❄️6.6 思考题](#❄️6.6 思考题)
- [🌍 第7章--面向数据流的方法](#🌍 第7章--面向数据流的方法)
- [❄️7.1.1 数据流图](#❄️7.1.1 数据流图)
- [❄️7.1.2 数据字典](#❄️7.1.2 数据字典)
- [❄️7.2 实体关系图](#❄️7.2 实体关系图)
- 🌍第8章--用户界面
- [🌍 第9章--设计模式](#🌍 第9章--设计模式)
- [❄️9.3 常用设计模式解析](#❄️9.3 常用设计模式解析)
- [❄️9.4 课后习题](#❄️9.4 课后习题)
- [🌍 第10章--Web服务体系结构](#🌍 第10章--Web服务体系结构)
- [🌍 第11章--基于分布结构的体系结构](#🌍 第11章--基于分布结构的体系结构)
- [❄️11.2 DOCM分布框架](#❄️11.2 DOCM分布框架)
- [🌍 第12章--软件体系结构评估](#🌍 第12章--软件体系结构评估)
- [❄️12.1.1 质量属性★](#❄️12.1.1 质量属性★)
- [❄️12.2 SAAM软件框架分析方法](#❄️12.2 SAAM软件框架分析方法)
- [❄️SAA 评估分为以下六个步骤](#❄️SAA 评估分为以下六个步骤)
- [🌍 软件分析题目](#🌍 软件分析题目)
🙋♂️ 作者:@whisperrr.🙋♂️
👀 专栏:软件体系结构复习 👀
🎉 其他专栏:零基础学Mysql 🎉
💥 标题:《软件设计与体系结构期末总结------评析秦航主编的<软件设计和体系结构第二版>》💥
❣️ 寄语:比较是偷走幸福的小偷❣️
前言
最近笔者在准备期末考试,顺便把软件体系结构的常考知识点总结一下,之前已经发过一次简答题试题,本篇文章主要是按照课本(软件设计和体系结构第二版 秦航主编 清华大学出版社)顺序来总结一下知识点.感谢支持,祝各位小伙伴元旦快乐.
🌍 第1章--引言
软件危机:软件开发与维护过程中出现的一系列严重问题。
表现:
- 软件成本日益增加:开发、部署与应用成本高
- 开发进度难以控制:不能按期完成
- 软件质量差:错误率高,不能满足用户的需求,没有生命力
- 软件维护困难:成本高,维护效果不理想,可能带来潜在的错误
原因:
- 用户需求不明确
- 缺乏正确的理论指导
- 软件规模越来越大
- 软件复杂度越来越高
🌍 第2章--软件模型和描述
❄️2.5.1 ADL简介
ADL:(Architecture Description Language)体系结构描述语言一种用于描述软件与系统结构的计算机语言,ADL是一种用于描述的语言,可以在指定的抽象层次上描述软件体系结构。
ADL元素:
- 构件:是指抽象级别上的组成系统的计算机模块。
- 操作:是指构件之间的交互机制。
- 模式:是指结构元素依照特殊方式进行的组合。
- 闭包:是指用于实现分成描述的概念。 规格说明:包括功能、性能、容错能力等。
❄️2.5.2 典型的ADL简介
-
WRIGHT语言:旨在体系结构与抽象行为的精确描述、体系结构风格的描述,以及系统的一致性和完整性的 验证等。 WRIGHT专注于抽象的表达,以及为架构师提供结构化表达系统信息的方法。
-
C2:支持构件重置与图形化用户接口(GUI)重用。
-
Darwin:是一种陈述性语言,为一类系统提供通用的说明符号。这类由使用不同的交互机制的不同构件组成,着眼于描述分布式软件系统,用分布式构件可以降低构件的复杂度。
-
Acme:是一种交互式的ADL,旨为开发工具与环境提供交互各式。
-
XADL:为架构师提供了更好的拓展性,将用于构建新的ADL。
-
π-ADL:是用于解决动态与移动体系结构说明的一种ADL,还关注体系结构行为。
-
KDL:(Kubernetes Deployment Language)是一门基于本体论的电子商务知识表达语言,可以看作是为 了一门针对特定领域而设计开发的ADL。
🌍第3章--软件体系结构建模和UML
❄️3.1 软件体系结构建模概述
根据建模的侧重点不同,将软件体系结构模型分为五种。
- 结构模型:是一个最直观、最普遍的建模方法,这种方法以体系结构的构件、连接件、其他概念来刻画结构,并力图通过结构来反应系统的重要语义内容,包括系统的配置、约束隐含的假设条件、风格、性质(核心是体系结构描述语言)。
- 框架模型:更侧重于整体的结构,模型主要以一些特殊问题为目的,建立只针对和适应该问题的结构。
- 过程模型:研究系统的步骤和过程。
- 动态模型:是对结构或框架模型的补充,研究系统的发力度行为性质
- 功能模型:该模型认为,体系结构是由一组功能构件按层次组成由下层向上层提供服务,可以看作一种特殊的框架模型。
❄️3.4.1 基本概念(面向对象)
- 对象(Object)是指一个独立的、异步的、并发的实体,"能知道一些事情"(既存储数据),"做一些事情"(既封装服务),并"与其他对象协同工作"(通过交换信息),从而完成系统的所有功能。
- 对象是现实世界的个体或事物的抽象表示,是属性和相关操作的封装。
- 属性表示对象的性质,属性值规定了对象所有可能的状态。
- 对象的操作是指该对象可以展现的外部服务
- 对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。
- 类:类的定义包括一组数据属性和在数据上的一组合法的操作。
- 继承性:继承是指能够直接获得已有的性质和特性,而不必重新定义他们。
- 多态性:多态性是指子类对象可以像父类对象那样使用同样的信息,既可以发送给父类对象,也可以发送给子类对象。
- 重载:在面向对象的软件技术有两种重载
- 函数重载:是指在同一作用域内的若干个参数特征不同的函数可以使用不同的名字
- 运算符重载:是指同一个运算符可以可以施加于不同类型的操作数上面。
- 消息:两个对象的交互是通过消息的发送和接受完成的。
- 聚集:表示类之间的关系是整体与部分的关系。
❄️3.6 UML中行为建模
行为建模称为动态建模 ,主要用来刻画系统中的动态行为、过程、步骤。
3.6.1 用例图
定义:是指被称为参与者与外部用户所能观察到的系统功能的模型图。
参与者:(Actor)是指在系统外部与系统直接交互的人或事物。
用例:(Use Case)是系统外部可见的一个系统单元。系统的功能由系统单元所提供,并通过一系列系统单元与一个或多个 参与者之间交换的消息所表达。
🌍 第4章--软件设计过程
❄️4.2 软件体系结构设计方法
多视图建模
- 逻辑视图:主要是支持系统功能需求的抽象描述,即系统最终将提供给用户什么样的服务。
- 开发视图:主要侧重于描述系统的组织与逻辑视图紧密相关,都描述了系统的静态结构。
- 过程视图:主要侧重于描述系统的动态行为,即系统运行时所表现出的相关特性。
- 物理视图:描述如何把系统软件元素映射到硬件上。
- 场景视图:场景是用户需求和系统功能实例的抽象。
❄️4.3.1 可信软件
可信软件是指软件系统的运行行为及其结果总是符合人们的预期,且在受到干扰(包括操作错误、环境影响、外部攻击等)时,仍能提供连续的服务。
性质
可靠性:(Reliability)在规定的环境下,规定的时间内,软件无失效运行的能力。
可靠安全性:(Safety)软件运行不引起危险\灾难的能力。
保密安全性:(Security)软件系统对数据和信息提供保密性、完整性、可用性、真实性保障的能力。
生存性:(Survivability)软件在受到攻击或失效出现时,连续提供服务并在规定的时间内恢复所有服务的能力。
容错性:(Fault Tolerance)软件在故障(硬件、环境异常)出现时,保证提供服务的能力。
实时性:(Real Time)软件在指定的时间内,完成反应或提交输出的能力。
❄️4.7 思考题
(1)简述抽象与逐步求精的含义
抽象是控制复杂性的基本策略,要求将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节;
逐步求精是更为详细的描述代替上一层次的抽象描述
(2)简述模块化与信息隐藏的关系。
模块化设计使得其所含的信息对于那些不需要这些信息的模块不可访问,每个模块只完成一个相对独立的特定功能,模块之间仅仅交换那些为完成系统功能必须交换的信息,因此模块化是信息隐藏的直接结果。
(3)为什么软件要追求高内聚、低耦合 ?
- 内聚度标志一个模块内部各个成分彼此结合的紧密程度,内聚度越高越好.
- 耦合度是对软件结构中模块间关联程度的一种度量,在设计软件时应追求尽可能松散耦合的系统,因为这类系统中的任一模块的设计、测试和维护相对独立,模块间的联系较少,错误在模块间的传播的可能性也随之变小。
🌍 第5章--软件体系结构风格
❄️ 5.2.1 管道 - 过滤器
功能模块从输入集合读入数据流,并在输出集合产生输出数据流,即功能模块对输入数据流进行增量计算得到输出数据流。
功能模块称为过滤器,功能模块间的连接可以看作输入、输出数据流之间的通路,称其为管道。
优点:
由于每个构件的行为不受其他构件的影响,因此整个系统的行为比较易于理解。
支持功能模块的复用。
具有较强的可维护性、可扩展性。
支持特殊的分析。
支持并发执行。
不足:往往会导致系统处理过程的成批操作需要对数据传输进行特定的处理时,导致对于每个过滤器的解析输入和格式化输出要做更多的工作,带来系统复杂性的上升。
在处理两个独立又相关的数据流时,可能会遇到困难。
并发处理获得的效率往往是一种假象。
❄️5.2.5 仓库风格和黑板风格
组成
- 知识源:基于仓库模式的系统完全是依靠仓库状态的变化来驱动的,那么仓库的建立,即记知识的来源是系统设计时首先需要解决的问题。
- 中央数据单元:它是整个系统的核心部件,对系统需要解决的问题预先进行了分析,定义总结出了系统运行过程中将要出现的多种状态,并制定了这些状态下系统的相应对策。
- 控制单元:控制单元的驱动完全是由仓库的状态变化承担。
❄️5.2.6 模式 - 视图 - 控制器
Model - View - Controller MVC结构是为那些需要为同样数据提供多个视图的应用程序而设计的,很好地实现了数据层与表示层的分离。MVC 是许多交互和界面系统的构成基础。
- 模型类:模型包含了应用问题的核心,数据、逻辑关系、计算能力、封装了所需的数据,提供了完成问题处理的操作过程。
- 视图类:视图通过显示的形式把信息传达给用户。
- 控制类:控制器通过时间触发的方式接收用户的输入。
MVC的实现
- 分析应用问题,对系统进行分离。
- 设计和实现每个视图。
- 设计和实现每个控制器。
- 使用可安装和卸载的控制器。
❄️5.2.7 解释器风格
解释器风格通常被用于建立一种虚拟用,以弥合程序的语义与作为计算引擎的硬件的间隙。
解释器风格的系统通常包括一个作为执行引擎的状态机和三个存储器,即系统由四个构件组成。
❄️5.4 客户/服务器
Client/Server(C/S)C/S体系结构是基于资源不对等,且为实现共享而提出来的,它定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。
组成部分:数据库服务器、客户应用程序和网络。
服务器负责有效的管理系统的资源集中方面如下:★
数据库安全的要求。
数据库访问并发性的控制。
数据库前端的客户应用程序的全局数据完整性规则。
客户端应用程序的主要任务:★
提供用户与数据库交互的界面。
向数据库服务器提供提交用户请求,并接收来自数据库服务器的信息。v
利用客户端应用程序,对存在于客户端的数据执行应用逻辑要求。
❄️5.5 三层C/S体系结构风格
组成★
- 表示层:是应用的用户接口部分,担负着用户与应用之间的对话功能,用于检查用户从键盘等输入的数据,显示应用输出的数据。
- 功能层:相当于应用的本体,用于将具体的业务处理逻辑编入程序。
- 数据层:数据层就是数据库管理系统,负责管理对数据库数据的读写。
❄️5.8.2 正交软件体系结构的优点
结构清晰,易于理解。
易修改,可维护性强。
可移植性强,重用粒度大。
🌍 第6章--面向对象方法
❄️6.2.1 面向对象系统开发过程
面向对象的思想及软件开发的各个阶段:
面向对象的分析(Object Oriented Analysis)
面向对象的设计(Object Oriented Design)
面向对象的编程实现(Object Oriented Programming)
面向对象的系统开发生命周期由分析阶段、设计阶段、实现阶段组成。
❄️6.3 图书管理系统用例图★
参考6.3.1文字介绍,深入理解(P:154)
其他用例图知识点:
❄️6.6 思考题
1.简述面向对象方法支持的 3 种基本活动:
1)识别对象和类
2)描述对象和类之间的关系
3)通过描述每个类的功能定义对象的行为
2.简述面向对象的系统开发生命周期:
1)识别系统目标与边界
2)识别用例
3)建立用例图
4)识别对象
5)建立类图
6)设计用例的详细逻辑7)建立顺序图和协作图 8)精化和完善模型
🌍 第7章--面向数据流的方法
❄️7.1.1 数据流图
数据流图(Data Flow Diagram): 是一种建模技术,能以图形的方式刻画数据流 从输入到输出变化的过程。数据流图通过描述对数据流进行变换的功能来建立系统的功能模型。
四种基本建模元素:
- 数据源点:表示系统中要处理的数据来源,数据汇点表示系统处理的结果要送到的地方。
- 数据流:表示动态的数据沿着箭头方向流动,由一组固定的数据项组成。
- 数据存储:表示静态的数据,即保存到数据库文件或其他文件中的数据。
- 加工:是对数据的处理或变换。
❄️7.1.2 数据字典
分层数据流图只是表达了系统的"分解",为了完整地描述这个系统还需借助数据字典的"小说明" ,对图中的 每个数据和加工给出解释。对数据流图中包含的所有元素定义的集合,构成了数据字典。
四类条目:
- 数据流条目:数据流条目给出了数据流图中数据流的定义,通常对数据流的简单描述为,列出该数据流的各组成数据项。
- 数据存储条目:数据存储条目给出某个数据存储的定义,数据存储的定义通常是列出数据存储记录的组成数据流,还可以指出数据存储的组织方式。
- 数据项条目:数据项条目给出某个数据单向的定义,通常是该数据项的值类型、允许为等。
- 加工条目:加工条目就是"加工小说明"。
❄️7.2 实体关系图
(Entity-Relation ship)
三种建模元素:
实体是人、事物、地方、甚至是收集的数据。
属性定义了数据对象的特征。
关系是指实体间的相互作用 。
7.4 案例说明★
购销系统:
7.8 思考题
🌍第8章--用户界面
8.9思考题
1.简述设计良好界面的主要途径。
分析用户类型
运用黄金规则
2.简述用户界面分析包含的内容。
1)用户分析:在理解用户的同时也要理解用户使用系统的方式,可以通过用户会谈销售人员信息采集、市场分析和用户支持人员信息收集等方式获取信息;
2)任务分析和建模:确定用户集合后,分析、确定人机系统需要完成的任务
3)内容展示分析:考虑界面显示内容的格式和关系;
4)工作环境分析:对于某些应用程序,计算机辅助系统的用户界面应放置在有利于用户使用的环境中,考虑系统交互能否以某种方式进行度量,在提供输入之前,多人间是否必须共享信息,如何给系统用户提供支持;
🌍 第9章--设计模式
❄️9.3 常用设计模式解析
设计模式总结了三大模型共计23种设计模式,根据其目的可分为:
创建模式(Creational)
结构型模式(Structural)
行为型模式(Behavioral)
根据范围可分为:
类模式:处理类和子类之间的关系,这些关系通过继承建立,在编译时被确定下来,是属于静态的。
对象模式:处理对象之间的关系,这些关系在运行时刻变化,更具动态性。
❄️9.4 课后习题
1.什么是设计模式?设计模式的目标是什么 ?
1)设计模式是对被用来在特定场景下解决一般设计问题的类和相互童鞋的对象的描述2)设计模式的目标是较好是实现代码的复用,增加可维护性。
2.设计模式具有哪三大特点 ?
1)在特定的场景下有可重用性,对相同类型的不同问题的环境,起解决方案都有效;
2)可传授性,即问题出现的机会很多,解决问题的方案相同,人们相对可以接受
3)有表示模式的名称;
5.MVC 模式是一个复合模式,请写出两种你知道的 MVC 中使用的模式。
1)观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时所有依赖它的对象都得到通知并被自动更新。
2)策略模式:定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
6.简述面向对象程序设计的六大基本原则
1)单一职责原则
2)开闭原则
3)里氏替换原则
4)依赖倒置原则
5)接口隔离原则
6)迪米特原则
🌍 第10章--Web服务体系结构
第十章主要记住英文对应的汉语意思.这里我们总结了19个.
- 远程过程调用(Remote Procedure Call, RPC)
- 简单对象访问协议(Simple Object Access Protocol, SOAP)
- 分布式组件对象模型(Distributed Component Object Model, DCOM)
- 远程方法调用(Remote Method Invocation,RMI)
- 公共对象请求代理体系结构(Common Object request broker Architecture, CORBA)
- 安全套接层(Secure Socket Layer, SSL)
- 非对称数字用户环路(Asymmetric Digital Subscriber Line, ADSL)
- 轻量目录访问协议(Lightweight Directory Access Protocol, LDAP)
- 可扩展性标记语言(Extensible Markup Language, XML)一种在所有web服务中表示数据和消息的统一的标准方式。
- Web服务描述语言(Web Service Description Language, WSDL)说明了web服务的接口,即每个被调用的方法以及能够接受和返回的参数。
- 发现协议(Discover Protocol, DISCO)作用相当于一个指针,帮助所有的web服务在特定的Web站点上进行定位,该协议可以为公司动态发现已发布的Web服务。
- 通用描述发现和集成(Universal Description, Discovery and Integration, UDDIW相当于存储可用的web服务的中心仓库,应用程序和开发人员可以通过访问 UDDI注册表来了解互联网上都有哪些可用的Web服务。
- W3C(World Wide Web Consortium)Web服务的标准化工作。
- 互联网内部对象请求代理协议(Internet Inter-ORB Protocol, IIOP)
- 远程方法调用(Remote Method Invocation, RMI)
- 超文本传输协议(Hypertext Transport Protocol, HTTP)
- 安全超文本传输协议(Hypertext Transport Protocol Secure, HTTPS)
- 文本传输协议(File Transfer Protocol, FTP)
- 简单邮件协议(Simple Mail Transport Protocol, SMTP)
🌍 第11章--基于分布结构的体系结构
❄️11.2 DOCM分布框架
Microsoft Distributed Component Object Model 是一系列微软的概念和程序接口利用这个接口,客户端程序对象能够请求来自网络中一台计算机上的服务器程序对象对象
对象管理组织(Object Management Group, OMG)
🌍 第12章--软件体系结构评估
❄️12.1.1 质量属性★
质量属性是一个组件或一个系统的非功能性特征.
软件质量在IEEE1061中定义,体现了软件拥有所期望的属性组合的程度,依照这个模型,软件质量共有六个标准
- 功能性:功能性是系统完成所期望工作的能力。(1):完备性(2):正确性。
- 可靠性:可靠性是系统无故障执行一段时间的概率。
- 可用性:可用性衡量准备输入操作和理解产品输出所花费的努力。
- 易理解性
- 易学性
- 易操作性
- 有效性:有效性是指在预定的启动时间中,系统真正可用并且完全运行时间所占的百分比。
- 可维护性:可维护性表明了在软件中纠正一个缺陷或做一次更改的简易程度。
- 可移植性:可移植性是度量把一个软件从一中运行环境转移到另一种运行环境中所花费的工作量。
❄️12.2 SAAM软件框架分析方法
基于场景的软件体系结构分析方法(Software Architecture Analysis Method, SAAM)一种非功能质量属性的体系结构分析方法,SAAM方法比较简单易学用,进行培训和准备的工作量都比较少.
特定目标:是对描述应用程序属性的文档,验证基本的体系结构假设和原则。
评估技术:是场景技术。
质量属性:这一方法的基本特点是把任何形式的质量属性都具体化为场景,但可修改性是SAAM分析的主要质量属性。
风险承担者: SAAM协调不同参与者所感兴趣的方面作为后续决策的基础,提供了对体系结构的公共理解。
体系结构描述: SAAM用于体系结构的最后版本,但早于详细设计。
方法活动:SAAM的主要输入问题是问题描述,需求声明和体系结构描述。
❄️SAA 评估分为以下六个步骤
- 场景的形成:通过集体讨论,风险承担者提出反映自己需求的场景。
- 描述软件体系结构: SAAM定义了功能性、结构、分配三个视角来描述软件体系结构。
- 场景的分类和优先级划分: 在分析过程中需要确定一个场景是否需要修改该体系结构。
- 间接场景的单独评估:主要针对间接场景,列出为支持该场景所需要对体系结构作出的修改,估计出这些修改的代价。
- 估计场景交互:两个或多个间接场景要求更改体系结构的同一个组件就称为场景交互。
- 形成总体评估:按照相对重要性为每个场景及场景交互设置一个权值,根据权值得出总体评价。
🌍 软件分析题目
第一题题目
现需要设计一个可以模拟各种动物行为的机器人。目前,在机器人中已定义了一系列方法:叫喊方法cry(),移动方法 move()。如果希望在不修改已有代码的基础上使得机器人能够像狗一样叫wang(),像狗一样跑run(),使用适配器模式进行设计,绘制设计类图。
第二题题目
在某多人联机对战游戏中,多个玩家可以加入同一战队组成联盟,当战队中的某一成员受到敌人攻击时将给所有其他盟友发送通知,盟友收到通知后将作出响应,欲使用观察者模式设计并实现该过程,以实现战队成员之间的联动。请画出该系统结构图,并指出每个类/接口充当的角色。
第三题题目
某软件公司承接了一个服务器负载均衡(Load Balance)软件的开发工作,该软件运行在一台负载均衡服务器上,可以将并发访问和数据流量分发到服务器集群中的多台设备上进行并发处理,提高系统的整体处理能力,缩短响应时间。由于集群中的服务器需要动态删减,且客户端请求需要统一分发,因此需要确保负载均衡器的唯一性,只能有一个负载均衡器来负责服务器的管理和请求的分发,否则将会带来服务器状态的不一致以及请求分配冲突等问题。如何确保负载均衡器的唯一性是该软件成功的关键,需单例模式设计服务器负载均衡器。请画出该系统结构图,并指出每个类/接口充当的角色。
其中将负载均衡器LoadBalance设计为单例类,其中包含一个存储服务器信息的集合serverList,每次在serverList中随机选择一台服务器来响应客户端的请求。
第四题题目
某软件公司要开发一个跨平台图像浏览系统.要求该系统能够显示BMP,JPG,GIF,PNG等多种格式的文件,并且能够在 Windows ,Linux,UNIX等多个操作系统上运行。系统首先将各种格式的文件解析为像素矩阵(Matrix),然后将像素矩阵显示在屏幕上,在不同的操作系统中可以调用不同的绘制函数来绘制像素矩阵。系统需具有较好的扩展性,以便在将来支持新的文件格式和操作系统。欲使用桥接模式设计该跨平台国像浏览系统欲使用桥接模式设计该跨平台国像浏览系统,请画出该系统结构图,并指出每个类/接口充当的角色
(1)Matrix:像素矩阵类,辅助类
(2)1magelmp:抽象操作系统实现类,充当实现类接
6
(3)Windowslmp:Windows操作系统实现类,充当具体
实现类
(4)Linuxlmp:Linux操作系统实现类,充当具体实现
热
(5)Unixlmp:UNIX操作系统实现类,充当具体实现
类
(6)Image:抽象图像类,充当抽象类
(7)JPGlmage:JPG格式图像类,充当扩充抽象类
充当扩充抽象类
(8)PNGImage:PNG格式图像类,
(9)BMPImage:BMP格式图像类,
充当扩充抽象类
(10)GIFImage:GIF格式图像类,充当扩充抽象类
(11)Client: 客户端测试类