三、题目预测填空题:1.请从外观、组合、工厂方法、模板方法、观察者、单件、抽象工厂、命令、迭代器、代理、适配器模式中选择7种填入下列的空缺中。P6101)工厂方法模式中,父类负责定义创建对象的公共接口,子类决定要创建的具体类是哪一个。2)抽象工厂模式提供一系列相关或相互依赖对象的接口而无需指定它们具体的类。3)单件模式确保某一个类仅有一个实例,并自行实例化并向整个系统提供这个实例。4)组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。使得用户对单个对象和组合对象的使用具有一致性。5)外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,为子系统中的一组接口提供一个一致的界面,简化了一群类的接口。6)观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,也就是让对象能在状态改变时被通知。7)模板模MVC模型式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。8)迭代器模式在对象的集合之中游走,而不暴露集合的实现。9)代理模式包装对象,以控制对比对象的访问。10)适配器模式封装对象,并提供不同的接口。2.工厂模式分为(简单工厂),(工厂方法),(抽象工厂)三种类型。3.适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是(继承)关系,而对象适配器采用的是(组合聚合)关系。4.设计模式的基本要素有(名字),(意图),(问题),(解决方案),(参与者与协作者),(实现),(一般性结构)。5.MVC模型的基本工作原理是基于(观察者)模式,实现是基于(命令)模式6.面向对象的六条基本原则包括:开闭原则,里式代换原则,合成聚合原则以及(依赖倒转),(迪米特法则)(接口隔离)。7.当我们想用不同的请求对客户进行参数化时,可以使用(命令)模式。8.当我们想封装不同算法并使它们可相互替换时,可以使用(策略)模式。9.每一个设计模式都集中于一个特定的(设计问题),描述了(相互通信的对象)或者(类)以及(解决方案)和(解决效果)。10.设计模式中应优先使用(对象组合)而不是(类继承)。11.面向对象(OO)的基础包括(抽象)(封装)(多态)(继承)。12.(状态模式)允许一个对象基于内部状态而拥有不同的行为。13.模式不是代码,而是(针对设计问题)的通用解决方案。14.观察者模式定义了对象之间(一对多)的关系。15.观察者和可观察者之间用(松耦合方式)结合。16.设计模式的两大主题是:(对象组合)和(类继承)的讨论。17.(组合)和(委托)可用于运行时动态地加上新的行为。18.工厂方法使用(继承)把对象的创建委托给子类,子类实现了工厂方法来创建对象。19.抽象工厂方法使用(对象组合)使对象的创建被实现在工厂接口所暴露出来的方法中。20.在Java中实现单件模式,需要私有的(构造器)(一个静态方法)和(一个静态变量)21.命令模式将(发出请求)的对象和(执行请求)的对象解耦。22.当需要一个现有的类而其接口不符合需求时,可使用(适配器)模式。23.适配器模式的两种模式是(对象适配器)和(类适配器)。24.(模板方法)定义了算法的步骤,把这些步骤的实现延迟到了子类。25.(代理模式)为另一个对象提供代表,以便控制客户对对象的访问。26.装饰着模式为对象加上(行为)而代理模式则是(控制访问)。27.开闭原则:(扩展开放)(修改关闭)。28.代理模式分为哪4种:(虚拟代理)(远程代理)(安全代理)(聪明引用)。选择题1.设计模式具有的优点。(A)A.适应需求变化B.程序易于理解C.减少开发过程中的代码开发工作量D.简化软件系统的设计2.若系统中的某子模块需要为其它模块提供访问不同数据库系统(Oracle、SQLServer、DB2UDB等)的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库,再打开数据库,最后对数据进行查询,(D)设计模式可抽象出相同的数据库访问过程;A.外观B.装饰C.单件D.模板方法3.系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条、或者带有黑色边框、或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加三个类,(B)设计模式可以实现该目的。A.外观B.装饰C.单件D.模板方法4.下面的类图表示的是哪个模式?(A)A、抽象工厂模式(AbstractFactory)B、工厂方法模式(FactoryMethod)C、命令模式(Command)D、责任链模式(ChainofResponsibility)5.下面的类图表示的是哪个设计模式?(B)A、代理模式(Proxy)B、装饰模式(Decorator)C、桥接模式(Bridge)D、观察者模式(Observer)6.下面的类图表示的是哪个模式?(B)A、代理模式(Proxy)B、外观模式(Facade)C、适配器模式(Adapter)D、桥接模式(Bridge)7.下面的类图表明了哪个模式?(D)A、责任链模式(ChainofResponsibility)B、命令模式(Command)C、备忘录模式(Memento)D、工厂方法模式(FactoryMethod)8.下面的类图表示的是哪个设计模式?(D)A、模板方法模式(TemplateMethod)B、命令模式(Command)C、单例模式(Singleton)D、状态模式(State)9.下面的类图表示的是哪个设计模式?(C)A、模板方法模式(TemplateMethod)B、命令模式(Command)C、单例模式(Singleton)D、状态模式(State)10.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用(A)模式。A.创建型B.结构型C行为型D.以上都可以11、设计模式的两大主题是(d)A.系统的维护与开发B对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展12、单例模式中,两个基本要点(ab)和单子类自己提供单例A.构造函数私有B.唯一实例C.静态工厂方法D.以上都不对13、下列模式中,属于行为模式的是(b)A.工厂模式B观察者C适配器以上都是14、对象适配器模式是(a)原则的典型应用。A.合成聚合复用原则B.里式代换原则C.依赖倒转原则D.迪米特法则15、静态工厂的核心角色是(a)A.抽象产品B.具体产品C.静态工厂D.消费者16、在观察者模式中,表述错误的是(c)A.观察者角色的更新是被动的。B.被观察者可以通知观察者进行更新C.观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行。D.以上表述全部错误。17、以下关于创建型模式说法正确的是。(A)A.创建型模式关注的是对象的创建B.创建型模式关注的是功能的实现C.创建型模式关注的是组织类和对象的常用方法D.创建型模式关注的是对象间的协作18.常用的描述设计模式的格式有(ABCD)。A.意图B.动机C.适用性D.结构19.以下关于结构型模式说法正确的是(ACD)。A.结构型模式可以在不破坏类封装性的基础上,实现新的功能。B.结构型模式主要用于创建一组对象。C.结构型模式可以创建一组类的统一访问接口D.结构型模式可以在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。20.以下属于结构型模式的是(AB)。A.代理(Proxy)模式B.合成(Composite)模式C.命令(Command)模式D.观察者(Observer)模式21.在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在(AD)。A.适配器(Adapte)模式B.合成(Composite)模式C.原型(Prototype)模式D.桥接(Bridge)模式22.结构型模式中最体现扩展性的几种模式是(BC)。A.适配器(Adapte)模式B.合成(Composite)模式C.装饰(Decorator)模式D.桥接(Bridge)模式23.行为类模式使用(B)在类间分派行为。A.接口B.继承机制C.对象组合D.委托24.以下属于行为对象模式的是(BCD)。A.模板(TemplateMethod)模式B.迭代器(Iterator)模式C.命令(Command)模式D.观察者(Observer)模式25.封装分布于多个类之间的行为的模式是(C)。A.观察者(Observer)模式B.迭代器(Iterator)模式C.访问者(Visitor)模式D.策略(Strategy)模式26.利用继承来提供DUCK的行为,会导致下列那些缺点?(ABCD)A.代码在多个子类中重复B.运行时的行为不容易改变C.我们不能让鸭子跳舞D.改变会牵一发而动全身,造成其他鸭子不想要的改变简答题:1.什么是设计模式?设计模式的目标是什么?答:设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。2.设计模式具有哪三大特点?答:(1)在特定的场景下有可重用性,对相同类型不同问题的环境,其解决方案都有效。(2)可传授性,即问题出现的机会很多,解决问题的方案相同,人们相对可以接受。(3)有表示模式的名称。3.GOF设计模式常用的有几种?GOF设计模式按照模式的目的可分为哪三类?答:行为型,结构型,创建型4.画出抽象工厂方法类图(这类题自己看书去。)5.针对接口编程,不针对实现编程的意义。答:主题与观察者都是用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点。6.面向对象(OO)的原则有:答:1.封装变化2.多用组合,少用继承3.针对接口编程,不针对实现编程4.为交互对象之间的松耦合设计而努力5.对扩展开放,对修改关闭6.依赖抽象,不要依赖具体类7.只和朋友交谈8.别找我,我会找你9.类应该只有一个改变的理由7.耦合分为几种?(1)内容耦合(2)公共耦合(3)外部耦合(4)控制耦合(5)标记耦合(6)数据耦合(7)非直接耦合8.GOF模式分为几种,每种包含哪些模式?答:分为3种。创建型设计模式:简单工厂模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式;结构型设计模式:适配器模式,桥接模式,组合模式,装饰模式,外观模式,轻量级模式,代理模式;行为性设计模式:责任链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略者模式,模板方法模式,访问者模式。综合题1.某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如下表所示:为支持将来能够模拟更多种类鸭子的特征,采用某设计模式设计的类图如下所示:其中,Duck为抽象类,描述了抽象的鸭子,而类RubberDuck、MallardDuck、CottonDuck和RedHeadDuck分别描述具体的鸭子种类,方法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;类FlyBehavior与QuackBehavior为抽象类,分别用于表示抽象的飞行行为与发声行为;类FlyNoWay与FlyWithWings分别描述不能飞行的行为和用翅膀飞行的行为;类Quack、Squeak与QuackNoWay分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。[C++代码]#includeiostreamusingnamespacestd;classFlyBehavior{public:virtualvoidfly()=0;};classQuackBehavior{public:virtualvoidquack()=0;};classFlyWithWings:publicFlyBehavior{public