资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
一、简答题(10分)1.1(3 分)什么是设计模式?设计模式的目标是什么? 设计模式是软件设计过程当中某一类常见问题的一般性问题的解决方案。1.2(3 分)设计模式具有哪三大特点?1.3 (4分)GOF设计模式常用的有几种? GOF设计模式按照模式的目的可 分为哪三类?行为型,结构型,创建型二、填空题(20分,每空2分) 请从外观、访问者、组合、工厂方法、模板方法、观察者、轻量级、 原型、责任链、单例、抽象工厂、命令12 种模式中选择10 种填入下列的 空缺中。2.1 ( 工厂方法)模式中,父类负责定义创建对象的公共接口,子类则负责生 成具体的对象。2.2 (抽象工厂)模式提供一系列相关或相互依赖对象的接口而无需指定它 们具体的类。2.3 (原型)模式用原型实例指定创建对象的种类,并且通过拷贝这些原 型实例创建新的对象。2.4 (单例)模式确保某一个类仅有一个实例,并自行实例化并向整个系 统提供这个实例。2.5 (组合)模式将对象组合成树形结构以表示“部分-整体”的层次结 构。使得用户对单个对象和组合对象的使用具有一致性。2.6 (外观)模式定义了一个高层接口,这个接口使得这一子系统更加容 易使用,为子系统中的一组接口提供一个一致的界面。2.7 ()模式运用共享技术有效地支持大量细粒度的对象。2.8 (责任链)模式使多个对象都有机会处理请求,从而避免请求的发送者 和接收者之间的耦合关系。2.9 (观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状 态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。2.10 (模板)模式定义一个操作中的算法的骨架,而将一些步骤延迟到 子类中。第 3 页(共 12 页)三、选择题(20分,每题2分)3.1 设计模式具有的优点。A. 适应需求变化B.程序易于理解C.减少开发过程中的代码开发工作量D.简化软件系统的设计3.2 下图描述了一种设计模式,该设计模式不可以。A. 动态决定由一组对象中某个对象处理该请求B. 动态指定处理一个请求的对象集合, 并高效率地处理一个请求C. 使多个对象都有机会处理请求,避免请求的发送者和接收者间的耦 合关系D. 将对象连成一条链,并沿着该链传递请求3.3 若系统中的某子模块需要为其它模块B提供访问不同数据库系统(Oracle、SQL Server、DB2 UDB 等)的功能,这些数据库系统提供的访 问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库, 再打开数据库,最后对数据进行查询, 设计模式可抽象出相同的数 据库访问过程;A.夕卜观B.装饰C.单件D.模板方法3.4系统中的文本显示类(TextView )和图片显示类(PictureView)都继 承了组件类(Component ),分别显示文本和图片内容,现需要构造带有滚 动条、或者带有黑色边框、或者既有滚动条又有黑色边框的文本显示控件 和图片显示控件,但希望最多只增加三个类, B 设计模式可以实现该目的。A.夕卜观B.装饰C.单件D.模板方法3.5 下面的类图表示的是哪个模式?A、抽象工厂模式(Abstract Factory)B、工厂方法模式(Factory Method)C、命令模式(Comma nd)D、责任链模式(Chain of Respo nsibili ty)3.6 下面的类图表示的是哪个设计模式?A、代理模式(Proxy) B、装饰模式(Decorator)C、桥接模式(Bridge ) D、观察者模式(Observer)3.7 下面的类图表示的是哪个模式?第 5 页(共 12 页)A、代理模式(Proxy) B、外观模式(Facade )C、适配器模式(Adapter) D、桥接模式(Bridge )3.8 下面的类图表明了哪个模式?A、责任链模式(Chain of Responsibility)B、命令模式(Comma nd)C、备忘录模式(Memento )D、工厂方法模式(Factory Method )3.9 下面的类图表示的是哪个设计模式?A、模板方法模式仃emplate Method) B命令模式(Comma nd)C、单例模式n gleto n) D、状态模式(State)第 6 页(共 12 页)3.10 下面的类图表明了哪个模式?A、模板方法模式仃emplate Method) B命令模式(Comma nd)C、单例模式n gleto n) D、状态模式(State)四、读程题(30分,每题15分)4.1在下面的C+代码中,类SalesTicket能够完成打印票据正文的功能, 类HeadDecorator与FootDecorator分别完成打印票据的台头和脚注的功 能。已知该程序运行后的输出结果如下所示。这是票据的台头!这是票据正文!这是票据的脚注!这是票据的台头!这是票据的脚注!C+程序代码#include using namespace std;class SalesTicket public:virtual void printTicket() cout 这是票据正文! printTicket();第 7 页(共 12 页);class HeadDecorator : public Decorator public:HeadDecorator(SalesTicket *t): Decorator(t) void printTicket() cout 这是票据的台头! endl; Decorator:printTicket();class FootDecorator :public Decorator public:FootDecorator(SalesTicket *t): Decorator(t) void printTicket() Decorator:printTicket();cout 这是票j_据的脚注! endl;void main(void) SalesTicket t;FootDecorator f(&t);HeadDecorator h(&f);h.printTicket();cout penb) 里刍 Qmguo 口 cq)铀处謝 羽工畴(s6ui/qi!/VA|d ) 驭额紬 (per)b) 里“蝕蝕“中刍 QmgPMHP羽) 铀 I?圭解旳(s6u!/vqi!/VA|d ) 驭额紬 (per)b) 里“蝕蝕“中刍发出橡皮与空气摩 擦的声(Squeak)不能飞行( FlyNoWay)黑白橡皮颜色 为支持将来能够模拟更多种类鸭子的特征,采用某设计模式设计的类 图如下所示:第 9 页(共 12 页)其中,Duck为抽象类,描述了抽象的鸭子,而类RubberDuck、MallardDuck、CottonDuck和RedHeadDuck分别描述具体的鸭子种类,方 法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、 发声特征和外观特征;类FlyBehavior与QuackBehavior为抽象类,分别 用于表示抽象的飞行行为与发声行为;类Fly NoWay与FlyWithW ings分别 描述不能飞行的行为和用翅膀飞行的行为;类Quack、Squeak与QuackNoWay 分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声 的行为。C+代码#includeusing namespace std ;class FlyBehavior public : virtual void fly() = 0;class QuackBehavior public: virtual void quack() = 0;class FlyWithWings:public FlyBehaviorpublic: void fly() cout 使用翅膀飞行! endl; ;class FlyNoWay:public FlyBehaviorpublic: void fly() cout 不能飞行! endl; ;class Quack:public QuackBehaviorpublic: void quack() cout 发出嘎嘎声! endl;class Squeak:public QuackBehaviorpublic: void quack() cout 发出空气与橡皮摩擦声! endl; ;class QuackNoWay:public QuackBehaviorpublic: void quack () cout 不能发声! fly(); 第 10 页(共 12 页)void quack() quackBehavior-quack(); ;virtual void display()=0;class RubberDuck: public Duck public:RubberDuck()flyBehavior = new FlyNoWay();quackBehavior = new Squeak();RubberDuck()if(!flyBehavior) delete flyBehavior;if(!quackBehavior) delete quackBehavior;void display() /*此处省略显示橡皮鸭的代码 */ ;/其它代码省略请根据上述类图和代码,阐述采用该设计模式进行设计的优势?第 11 页(共 12 页)五、设计题(20分,每题10分) 请根据下面的叙述,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号