设计模式与软件体系结构---期末复习题

题目:
在这里插入图片描述

解答:

1、上述设计使用了抽象工厂设计模式
2、在这里插入图片描述
3、SuperGameFactory和MedGameFactory
4、多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体产品类的实例,也就是创建的是一个产品线下的多个产品。
5、工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

1、Java是单继承语言,不支持多继承
2、
在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

a、逻辑图:在这里插入图片描述
b、设计类图:在这里插入图片描述
c、每个方法的功能:

  • Filter类:setInPipe()和setOutPipe()负责设置输入输出管道,Start()和Stop()负责控制过滤器开始工作和暂停工作;
  • Filter类的子类:processData()负责实现每个子类对应的功能;
  • Pipe类:read()和write()实现数据的读取与写入,close()实现流的关闭。

题目:
在这里插入图片描述

解答:

a、逻辑图:在这里插入图片描述
b、设计类图:在这里插入图片描述
c、每个方法的功能:

  • Filter类:setInPipe()和setOutPipe()负责设置输入输出管道,Start()和Stop()负责控制过滤器开始工作和暂停工作;
  • Filter类的子类:processData()负责实现每个子类对应的功能;
  • Pipe类:read()和write()实现数据的读取与写入,close()实现流的关闭。

题目:
在这里插入图片描述

解答:

1、设计类图:在这里插入图片描述
2、解释:
 Observable和Observer为接口类,FishbowlGUI为被观察类(实现Observable接口),ChemistryGUI、TemperatureGUI、LevelGUI为观察者类(实现Observer接口)。
 FishbowlGUI有3个私有变量quality、temperature和level,分别代表鱼缸的水质、水温和水位高度,每个私有变量都有其对应的get和set方法。
 三个观察者类都要实现takeAction(Observable s)方法,每个类实现该方法的方式不同:

  • 当quality超过特定范围时,化学传感器ChemistryGUI排除鱼缸部分废水,补充新水;
  • 当temperature低于或高于特定温度时,TemperatureGUl开启加热设备或者冷却设备调整水温;
  • 当level高于或低于特定高度时,LevelGUI开启排水设备,排除部分水或者添加新鲜的水。

 该方法通过参数传入一个被观察者对象,当得到通知后,将对被观察者类FishbowlGUI的某些方法进行调用,以便获取变化的状态。

题目:
在这里插入图片描述

解答:

1、设计类图:在这里插入图片描述
2、AirportInfo类三个方法的功能:

  • AddObserver(Observer obs)方法,将多个观察者添加到被观察者的observerList中,以便在通知观察者时使用;
  • setChanged()和notifyObservers(),通知观察者被观察者对象的状态已经改变,同时会运行观察者对象的update()方法。执行顺序为:setChanged()先执行,notifyObservers()后执行。

3、update方法的参数:

  • 第一个参数为Observable类型,代表被观察者对象;
  • 第二个参数为Object类型,代表发生的事件,Object为被观察者的一种状态值,提供给update()方法,以便更新观察者。

4、具体行为:

  • VoiceInfo类的update()方法完成的工作是从AirportInfo类获取语音机场信息,然后将这些信息发送给乘客;
  • DisplayInfo类的update()方法负责从AirportInfo类获取文字机场信息,然后将这些信息显示在屏幕上。

5、工作原理:

  • 被观察者AirportInfo有一个observerList(ArrayList类型)成员变量,用于记载动态添加的观察者。
  • 对被观察者状态感兴趣的对象(观察者)VoiceInfo和DisplayInfo,应该调用被观察者的addObserver()方法将自己注册为它的一个观察者。
  • 每当AiportInfo的状态发生改变时,它将调用setChanged()方法和notifyObservers()方法(通知已经注册的观察者VoiceInfo和DisplayInfo)。
  • 接收到通知以后,VoiceInfo和DisplayInfo都将查询AirportInfo的状态,以便保持状态同步。根据新的状态,VoiceInfo和DisplayInfo将分别调用update()方法执行相关操作。

题目:
在这里插入图片描述

解答:

在这里插入图片描述


题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

题目:
在这里插入图片描述

解答:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值