问题 问答题

阅读以下关于设计模式应用的叙述,根据要求回答问题。
[说明]
某软件公司承接了一项面向儿童的模拟游戏软件的开发任务,该游戏软件主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏软件需要模拟的鸭子种类及其特征如表所示

鸭子种类及其特征
鸭子种类 发声特征 飞行特征 外观特征
灰鸭(MallardDuck) 发出“嘎嘎”声(Quack) 用翅膀飞行(FlyWithWings) 灰色羽毛
红头鸭(RedHeadDuck) 发出“嘎嘎”声(Quack) 用翅膀飞行(FlyWithWings) 灰色羽毛、头部红色
棉花鸭(CottonDuck) 不发声(QuackNoWay) 不能飞行(FlyNoWay) 白色
橡皮鸭(RubberDuck) 发出橡皮与空气摩擦的声音(Squeak) 不能飞行(FlyNoWay) 黑白橡皮颜色
为支持将来能够模拟更多种类鸭子的特征,该公司架构师采用某种设计模式设计的类图如图1所示。在图1中,类Duck描述了抽象的鸭子,方法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;类FlyBehavior与QuackBehavior分别用于表示抽象的飞行行为与发声行为。
图1


[问题3]
设计模式在力度和抽象层次上各不相同。按设计模式的目的划分,可分为创建型、结构型和行为型3种模式;按设计模式的范围划分,可分为类设计模式和对象设计模式两种。请将下列A~J标记的设计模式填入到下表中的(1)~(5)空缺处。(请用A~J答题)
A.Abstract Factory模式 B.Adapter模式 C.Chain of Responsibility模式
D.Decorator模式 E.Factory Method模式F.Flyweight模式
G.Interpreter模式 H.Iterator模式 I.Template Method模式
J.Visitor模式

设计模式空间
目 的
创建型 结构型 行为型
范 围 (1) (2)
对 象 (3) (4) (5)

答案

参考答案:设计模式主要用于得到简洁灵活的系统设计,GoF的书中共有23个设计模式,这些模式可以按两个准则来分类:一是按设计模式的目的划分,可分为创建型、结构型和行为型3种模式;二是按设计模式的范围划分,即根据设计模式是作用于类还是作用于对象来划分,可分为类设计模式和对象设计模式,如表所示。

设计模式空间
目的
创建型 结构型 行为型
范围 Factory Method Adapter(类) Interpreter
Template Method
对象 Abstract Factory
Builder
Prototype
Singleton
Adapter(对象)
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsibility
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor
创建型模式是对对象实例化过程的抽象,它通过采用抽象类所定义的接口,封装了系统中对象如何创建及组合等信息。该模式允许在系统中创建对象,而不需要在代码中标识特定类的类型,这样用户就不需要编写大量复杂的代码来初始化对象。它是通过该类的子类来创建对象的。但是,这可能会限制在系统内创建对象的类型或数目。创建型模式主要有Factory Method(工厂方法)、Abstract Factory(抽象工厂)、Builder(构建器)、Prototype(原型)和Singleton(单独)等模式。
结构型模式主要用于如何组合已有的类和对象以获得更大的结构,一般借鉴封装、代理或继承等概念将一个或多个类或对象进行组合和封装,以提供统一的外部视图或新的功能。该模式允许在不重写代码或自定义代码的情况下创建系统,从而使系统具有增强的重复使用性和应用性能。该模式控制了应用程序大部分之间的关系,将以不同的方式影响应用程序。结构型模式主要有Adapter(适配器)、Bridge(桥接)、Composite(组成)、Decorator(装饰)、Fagade(外观)、Flyweight(享元)和Proxy(代理)等。
行为型模式主要用于对象之间的职责及其提供的服务的分配,它不仅描述对象或类的模式,还描述它们之间的通信模式,特别是描述一组对等的对象怎样相互协作以完成其中任意一个对象都无法单独完成的任务。该模式可以影响一个系统的状态和行为流。通过优化状态和行为流转换及修改的方式,可以简化、优化并且提高应用程序的可维护性。行为型模式主要有Interpreter(解释器)、TemplateMethod(模板方法)、Chain of Responsibility(职责链)、Command(命令)、Iterator(迭代器)、Mediator(中介者)、Memento(备忘录)、Observer(观察者)、State(状态)、Strategy(策略)和Visitor(访问者)等。

单项选择题

問題9 次の文章を読んで、文章全体の内容を考えて、 50 から 54 の中に入る最もよいものを、1、2、3、4から一つ選びなさい。ランチメニューはなぜ安い 飲食店には、夜だけでなく昼も営業して、ランチメニューを出しているところも多い。このランチメニュー、たいていは夜に比べると手ごろな価格に設定されている。(  50 )、夜はパスタだけで1,200円ぐらいする店でも昼はパスタにスープとサラダがついて980円といったものや、夜はコース料理が5,000円以上する店でも昼は1,000円前後になるといったものだ。この昼と夜の価格差は一体、何によるものなのだろうか。安いからといって、料理人が手を抜いているとか、安い材料を使っているとか、そういったことは( 51 )ない。味が落ちれば悪い評判が立ち、夜の営業にも悪影響を与えてしまう。ランチメニューを安くできる理由は単純明快だ。飲食店に限らず、店を経営していくためには、材料費、光熱費、店員の給料などさまざまなコストがかかるが、そのコストをおさえられれば、商品の価格を下げても利益は上げることができる。( 52 )、メニューをいくつかに絞るという方法で、コストをおさえているケースが多い。メニューが少なければ、準備や調理に手間がかからず、多くの料理人を働かせる必要もない。そのため、安くすることができると( 53 )。コストをおさえて、安いランチメニューでも飲食店は利益を上げている。また、安くておいしいランチを食べた客が店を気に入り、夜も店を訪れる可能性もある。飲食店にとって、利益が上げられ、さらに客も獲得できるランチは、「おいしい」( 54 )

A.意外では

B.間違いでは

C.だから

D.もちろん

单项选择题