B.提供了一个简单且公用的接口去处理复杂的子系统,并且没有减少子系统的功能。 C.限制了客户的自由,减少了可变性。 D.客户与抽象的实现类中存在若干依赖。
5.关于访问者模式(Visitor)的适用性以下哪些是正确的。 A B C
A.一个对象的结构包含多个不同接口的对象,并且需要根据具体对象作不同的处理。 B.对结构中的对象有很多不同且没有联系的处理,因此需要避免操作将类分离。 C.类中定义的对象结构很少改变,但需要以常地定义处理结构的新操作。
D.需要对行为的算法作很多变动。
6.以下哪些设计模式都可以用来将抽象部分与实现部分分离 C
A.适配器模式(Adapter) B.装饰模式(Decorator)
C.桥接模式(Bridge)
D.代理模式(Proxy) 7.以下属于创建型模式的是 A C
A.抽象工厂(Abstract Factory)模式 B.合成(Composite)模式 C.单例(Singleton)模式 D.桥接(Bridge)模式
8.面向对象系统中功能复用的最常用技术是 A B
A.类继承 B.对象组合 C.使用抽象类 D.使用实现类
9.以下哪些问题通过应用设计模式能够解决 A D
A.指定对象的接口 B.排除软件BUG
C.确定软件的功能都正确实现 D.设计应支持变化
10.以下属于行为对象模式的是 A B C D
A.模板(Template Method)模式 B.迭代器(Iterator)模式 C.命令(Command)模式
D.观察者(Observer)模式 11.在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在 A D
A.适配器(Adapte)模式 B.合成(Composite)模式 C.原型(Prototype)模式 D.桥接(Bridge)模式
12.以下关于抽象工厂设计模式,说法正确的是 A B C D
A.提供一系列相互依赖对象的创建工作 B.封装对象常规的创建方法(new) C.提供统一调用数据访问方法的方式
D.避免调用数据访问方法和具体对象创建工作的紧耦合
三、简答题
1.请简述下,继承在程序设计中,存在的缺陷?
答:因为在使用继承时,父类的任何改变都可能影响子类的行为,没有助于保持每个类的单一职责原则。
2.简述下,结构型模式一共有多少种,分别为哪些?代理模式、装饰模式和适配器模式,有什么区别,如何区分应用在具体事例中。并请举例说明。
答:一共有7种,分别为组合模式、装饰模式、外观模式、享元模式、代理模式、适配器模式、桥接模式;1 适配器模式是将一个类(a)通过某种方式转换成另一个类(b). 2 装饰模式是在一个原有类(a)的基础之上增加了某些新的功能变成另一个类(b). 3 代理模式是将一个类(a)转换成具体的操作类(b).
3.简述下,创建型模式一共有多少种,分别为哪些?工厂方法模式、抽象工厂模式与建造者模式,有什么区别,如何区分应用在具体事例中。并请举例说明。
一共6钟,分别是简单工厂,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式。工厂只不过是对一个产品的封装,而抽象工厂是对一系列相关产品的
封装,建造者也是一种封装,只是它封装的是过程。
4.您现负责通过文件操作的开发框架设计任务。经过调研后,您发现公司已经封装好一个类专门用于提供txt , XML , Word , Excel 文件操作的功能。为了使得开发框架能最大的程度的复用,您该如何设计您的开发框架。现提出几点技术意见:
1. 本框架提供对各类文件(txt , XML , Word , Excel)的通用读取和写入功能。 2. 在文件读写时,能支持字符转码和字符转字节这两个功能的热插拔。
3. 在文件读写时,能支持处理过程动作自定义,即:在文件读写正在进行中能加入业务功能。例如:每读取100个字节,则滚动条增加一格。
根据以上的说明,详细阐述该结合使用哪几种设计模式来实现以上的开发框架。
5.根据以下场景说明,请选用最佳的设计模式,并说明该设计模式的原理及其优缺点?
场景:你在淘宝网上开了一间个人网店,你与买家之间不是面对面的现金交易,而是通过淘宝网的支付宝系统进行电子货币虚拟交易。你网店的营业金额从支付宝里取,买家也把应支付的金额交给支付宝。
适配器模式,一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
6.根据以下场景说明,请选用最佳的设计模式,并说明该设计模式的原理及其优缺点?
场景:你拿出上次旅行时所拍摄的个人写真照片,但你发觉你看来看去都不顺眼,于是你到礼品店买了个相框,结果你发现相框整体感还是达不到你的要求,所以你在相框上贴了一些小东西。经过你一番的努力,相框的整体感觉终于符合你的期望了。
装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。 动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。
7.根据以下场景说明,请选用最佳的设计模式,并说明该设计模式的原理及其优缺点?
场景:你与家人商量周末自驾一同前往海滩度假,以下是你和家人的对话.
妹妹:“我想把芭比娃娃带上车。” 我:“好好,还有呢?”
妈妈:“得把家里的个人日用品带上车。” 我:“好好,还有呢?”
爸爸:“车上得备上几瓶好酒。” 我:“好好,还有呢?” ........
到了周末,我把所有的东西一件一件装上车,一路颠簸终于到了海滩。 迭代子模式:迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。 迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。
迭代算法可以独立于聚集角色变化。
8.根据以下场景说明,请选用最合适的设计模式,并阐述该设计模式的原理及其优缺点?
场景:假设某天你请朋友吃饭,麦当劳的鸡翅和肯德基的鸡翅都是朋友爱吃的东西,虽然口味有所不同,但不管你带朋友去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。
工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。 消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。
1) 工厂方法 模式中,父类负责定义创建对象的公共接口,子类决定要创建的具体类是哪一个。 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.程序易于理解