1、设计模式简答题1什么是设计模式?设计模式的目标是什么?答: 设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。2设计模式具有哪三大特点?答: (1) 在特定的场景下有可重用性,对相同类型不同问题的环境,其解决方案都有效。(2) 可传授性,即问题出现的机会很多,解决问题的方案相同,人们相对可以接受。(3) 有表示模式的名称。3GOF 设计模式常用的有几种?GOF 设计模式按照模式的目的可分为哪三类?答: 行为型,结构型,创建型4画出抽象工厂方法类图(这类题自己看书去。)5.针对接口编程,不针对实现编程的意义。答:
2、 主题与观察者都是用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点。6.面向对象(OO)的原则有:答: 1. 封装变化 2. 多用组合,少用继承 3. 针对接口编程,不针对实现编程 4. 为交互对象之间的松耦合设计而努力 5. 对扩展开放,对修改关闭 6. 依赖抽象,不要依赖具体类 7. 只和朋友交谈 8. 别找我,我会找你 9. 类应该只有一个改变的理由 7. 耦合分为几种?(1) 内容耦合 (2) 公共耦合 (3) 外部耦合 (4) 控制耦合(5) 标记耦合 (6) 数据耦合 (7) 非直接耦合8.GOF模式分为几种
3、,每种包含哪些模式?答:分为3种。创建型设计模式:简单工厂模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式;结构型设计模式:适配器模式,桥接模式,组合模式,装饰模式,外观模式,轻量级模式,代理模式;行为性设计模式:责任链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略者模式,模板方法模式,访问者模式。1不要和陌生人说话” 是(D)原则的通俗表述 A接口隔离 B里氏代换 C依赖倒转 D迪米特 2当一个抽象模型有两个方面,其中一个方面依赖于另一方面,将这两者封装在独立的对象中以使它们可以各自独立地改变和复用,可以考虑使用(A) A观察者模式
4、 B命令模式 C适配器模式 D单例模式 3对于某些类来说,只有一个实例是非常重要的,例如,系统中可以有都种类型的打印机,但是只能有一个打印机假脱机,只应该一个文件系统和一个窗口管理器,为此,可以使用(C)。 A工厂模式 B享元模式 C单例模式 D外观模式 4当需要支持日志修改时,可以考虑使用(A ) A命令模式 B工厂模式 C单例模式 D适配器模式 5当需要在不同时刻指定、排列和执行请求是,可以考虑使用(A)。 A命令模式 B策略模式 C适配器模式 D责任链模式 6在需要构建一个层次结构的子系统时,可以使用门面模式定义子系统中每层的入口点,可以考虑使用(A)。 A外观模式 B工厂模式 C装饰模
5、式 D适配器模式 7希望创建一个可复用的类,该类必须能够与接口不可预订的类协同工作,可以考虑使用(B) A桥接模式 B适配器模式 C工厂模式 D装饰模式 8在面向对象的原则中,(B)表示使用多个专门的接口比使用单一的总接口要好,一个类对另一个来的依赖性应当是建立在最小的接口上的。 A单一责任原则 B接口隔离原则 C依赖倒转原则 D迪米特原则 9当需要强调一系列相关产品对象的设计以便进行联合使用,可以考虑使用(A)。 A工厂模式 B单例模式 C建造者模式 D原型模式 10当客户程序与抽象类的实现部分之间存在很大的依赖性时,可以考虑使用(D) A单例模式 B享元模式 C工厂模式 D外观模式 11在
6、设计模式中,(D)保证每个类只要单个实例。 A工厂模式 B外观模式 C享元模式 D单例模式 12(C)是指以设计复用为目的,采用一种良好定义、正规的、一致的方式记录的软件设计经验。 A架构 BUML模型 C设计模式 D设计数据 13在面向对象的的设计原则中,(A)表示高层模块不应该依赖于低层模块,都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。 A依赖倒转原则 B开放封闭原则 C迪米特原则 D里氏替换原则 14(A)将整个软件系统划分为模型、视图和控制器三个部分。 AMVC B分层模式 C管道模式 D架构模式 15在面向对象的设计原则中,(B)表示软件实体应当对扩展开放,对修改关闭
7、,即软件实体应当在不修改的前提下扩展。 A单一责任原则 B开放封闭原则 C里氏替换原则 D迪米特原则 16在设计模式中,(C)的核心是缓存和共享 A门面模式 B工厂模式 C享元模式 D单例模式 17关于适配器模式(Adapter)说法正确的是 A A将抽象部分与实现部分分离,使得它们两部分可以独立地变化 B将一个接口转换成为客户想要的另一个接口。 C组合多个对象形成树形结构以表示整体-部分的结构层次。其对单个对象和组合对象的使用具有一致性。 D为其他对象提供一个代理或地方以控制对这个对象的访问。 18迭代器模式(Iterator)模式适用于 B A需要在不同的时间创建请求,生成请求队列,执行请
8、求。 B需要遍历访问聚集中的对象而不能暴露聚集中内部结构。 C想避免抽象方法和其实现方法绑定在一起。 D一组对象复杂地相互通信但其方法是定义明确的。 19请说出以下是运用何种设计模式 A abstract class Chess public abstract void Display(); class BlackChess : Chess public override void Display() Console.WriteLine(黑棋); class ChessFactory public Hashtable chesses = new Hashtable(); public Ches
9、s GetChess(string key) Chess chess = (Chess)chesseskey; if (chess = null) switch (key) case 黑: chess = new BlackChess(); break; case 白: chess = new WhiteChess(); break; chesses.Add(key, chess); return chess; A享元模式(Flyweight) B工厂模式(Factory) C备忘录模式(Memento) D组合模式(Composite) 20以下哪种设计模式最符合以下场景说明: 【军情的传递
10、】 军队中军情的传递就是一个责任链,下属行动需要上级批准,所以要把行动计划报给上级,上级又传给上级,直至有人可以决定。一个士兵请求进入反恐行动组,他就会给班长发送请求,班长给排长,排长给连长,这样一直传到军长,由军长进行批准。 A桥接模式(Bridge) B外观模式(Facade) C命令模式(Command) D责任链模式(Chain of Responsibility) 21以下哪种设计模式最符合以下场景说明: D 【电视节目选择器】 电视提供了(creates)面板和遥控器两种节目选择方法,都具有“下一个”和“上一个”按钮来控制转到不同的频道。 A责任链模式(Chain of Respo
11、nsibility) B观察者模式(Observer) C模板方法模式(Template Method) D迭代器模式(Iterator) 22以下哪种设计模式能够支持动态地给一个对象增加其他职责而且在职责整合时支持热插拔 B A桥接模式(Bridge) B装饰模式(Decorator) C享元模式(Flyweight) D外观模式(Facade) 23关于设计模式本质的说法,以下哪个是正确的 C A设计模式利用类的继承来实现功能扩展 B设计模式利用类的组合来实现功能扩展 C设计模式就是在不修改原有类的基础上通过新增类来实现功能扩展或功能变更 D设计模式就是利用类的继承和组合来实现功能扩展或功
12、能变更 24请说出以下是运用何种设计模式 D abstract class AbstractFactory public static AbstractFactory CreateFactory(string type) AbstractFactory factory = null; switch (type) case Bmw: factory = new BmwFactory(); break; case Audi: factory = new AudiFactory(); break; return factory; public abstract AbstractSportsCar C
13、reateSportsCar(); public abstract AbstractBussinessCar CreateBussinessCar(); class BmwFactory : AbstractFactory public override AbstractSportsCar CreateSportsCar() return new Bmw.BmwSportsCar(); public override AbstractBussinessCar CreateBussinessCar() return new Bmw.BmwBussinessCar(); A组合模式(Composi
14、te) B简单工厂模式(Simple Factory) C工厂方法模式(Factory Method) D抽象工厂模式(Abstract Factory) 25以下哪个设计模式最符合以下的场景说明: A 1.能使客户端独立于产品的创建过程,并且在系统中引入新产品时无需对客户端进行修改。 A工厂模式(Factory) B状态模式(State) C享元模式(Flyweight) D原型模式(Prototype) 26以下哪个设计模式是着重于一步步构造一个复杂对象并且是最后步骤才将返回此对象 C A简单工厂模式(Simple Factory) B抽象工厂模式(Abstract Factory) C建
15、造者模式(Builder) D单例模式(Singleton) 27异常处理机制可理解为哪一种行为模式 C A观察者(Observer)模式 B迭代器(Iterator)模式 C职责链(Chain of Responsibility)模式 D策略(Strategy)模式 28Observer(观察者)模式适用于 C A当一个抽象模型存在两个方面,其中一个方面依赖于另一方面,将这二者封装在独立的对象中以使它们可以各自独立地改变和复用 B当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变时 C当一个对象必须通知其它对象,而它又不能假定其它对象是谁。也就是说你不希望这些对象是紧密耦
16、合的 D一个对象结构包含很多类对象,它们有不同的接口,而想对这些对象实施一些依赖于其具体类的操作 29封装分布于多个类之间的行为的模式是 C A观察者(Observer)模式 B迭代器(Iterator)模式 C访问者(Visitor)模式 D策略(Strategy)模式 30结构型模式中最体现扩展性的几种模式是 C A适配器(Adapte)模式 B合成(Composite)模式 C装饰(Decorator)模式 D桥接(Bridge)模式 31常用的基本设计模式可分为 A A创建型、结构型和行为型 B对象型、结构型和行为型 C过程型、结构型和行为型 D抽象型、接口型和实现型 32以下关于创建
17、型模式说法正确的是 A A创建型模式关注的是对象的创建 B创建型模式关注的是功能的实现 C创建型模式关注的是组织类和对象的常用方法 D创建型模式关注的是对象间的协作 33以下哪个模式是利用一个对象,快速地生成一批对象 C A抽象工厂(Abstract Factory)模式 B合成(Composite)模式 C原型(Prototype)模式 D桥接(Bridge)模式 34以下关于抽象工厂模式与建造者模式区别,说法不正确的是 C A建造者模式着重于一步步构造一个复杂对象; B建造者模式在最后一步返回产品; C抽象工厂中,产品是立即返回的 D抽象工厂着重于单个的产品对象。 35以下对于代理模式,说
18、法不正确的是 B A虚拟代理:代理不会生成一个真实的耗费代理,直到非常有必要时(首次有请求0。用来存放花费大(实例化要很长时间)的真实对象。 B远程代理:本地代理对象控制一个本地的对象。 C安全代理:代理检查调用真实对象所需要的权限。 D聪明代理:当调用真实的对象时,代理处理另外一些事。 36抽象工厂模式的别名为 C A虚拟构造器模式 B静态工厂模式 CKit模式 D多态工厂模式 37下列模式中,属于结构模式的是(B )。 A抽象工厂模式 B装饰模式 C策略模式 D建造者模式 38下列关于静态工厂与工厂方法表述错误的是( A )。 A两者都满足开闭原则:静态工厂以if else方式创建对象,增
19、加需求的时候会修改源代码 B静态工厂对具体产品的创建类别和创建时机的判断是混和在一起的,这点在工厂方法中 C不能形成静态工厂的继承结构 D在工厂方法模式中,对于存在继承等级结构的产品树,产品的创建是通过相应等级结构的工厂创建的 39适配器模式是( A )原则的典型应用。 A合成聚合复用原则 B里氏代换原则 C依赖倒置原则 D迪米特法则 40下列模式中,不属于创建模式的是( A )。 A适配器模式 B工厂方法模式 C原型模式 D以上都不是 二、多选题1当使用单件(单例)设计模式时,可以获得如下(A B C D)优点。 A对唯一实例提供受控访问 B缩小名称空间 C允许对操作和表示进行精化操作 D运
20、行可变数目的类实例数 2从模式所提供的功能性来看,模式可以分为( A C D ) A创建模式 B测试模式 C行为模式 D结构模式 3以下属于面向对象的设计原则的有(A B C D) A迪米特原则 B依赖倒转原则 C接口隔离原则 D无循环依赖原则(包图) 4关于外观模式(Facade)说法正确的是? A B A提供一个统一的接口去访问多个子系统的多个不同的接口。 B提供了一个简单且公用的接口去处理复杂的子系统,并且没有减少子系统的功能。 C限制了客户的自由,减少了可变性。 D客户与抽象的实现类中存在若干依赖。 5关于访问者模式(Visitor)的适用性以下哪些是正确的。 A B C A一个对象的
21、结构包含多个不同接口的对象,并且需要根据具体对象作不同的处理。 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面向
22、对象系统中功能复用的最常用技术是 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
23、桥接(Bridge)模式 12以下关于抽象工厂设计模式,说法正确的是 A B C D A提供一系列相互依赖对象的创建工作 B封装对象常规的创建方法(new) C提供统一调用数据访问方法的方式 D避免调用数据访问方法和具体对象创建工作的紧耦合三、简答题1请简述下,继承在程序设计中,存在的缺陷? 答:因为在使用继承时,父类的任何改变都可能影响子类的行为,没有助于保持每个类的单一职责原则。2简述下,结构型模式一共有多少种,分别为哪些?代理模式、装饰模式和适配器模式,有什么区别,如何区分应用在具体事例中。并请举例说明。 答:一共有7种,分别为组合模式、装饰模式、外观模式、享元模式、代理模式、适配器模式
24、、桥接模式;1 适配器模式是将一个类(a)通过某种方式转换成另一个类(b).2 装饰模式是在一个原有类(a)的基础之上增加了某些新的功能变成另一个类(b).3 代理模式是将一个类(a)转换成具体的操作类(b).3简述下,创建型模式一共有多少种,分别为哪些?工厂方法模式、抽象工厂模式与建造者模式,有什么区别,如何区分应用在具体事例中。并请举例说明。 一共6钟,分别是简单工厂,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式。工厂只不过是对一个产品的封装,而抽象工厂是对一系列相关产品的封装,建造者也是一种封装,只是它封装的是过程。4您现负责通过文件操作的开发框架设计任务。经过调研后,您发
25、现公司已经封装好一个类专门用于提供txt , XML , Word , Excel 文件操作的功能。为了使得开发框架能最大的程度的复用,您该如何设计您的开发框架。现提出几点技术意见: 1 本框架提供对各类文件(txt , XML , Word , Excel)的通用读取和写入功能。 2 在文件读写时,能支持字符转码和字符转字节这两个功能的热插拔。 3 在文件读写时,能支持处理过程动作自定义,即:在文件读写正在进行中能加入业务功能。例如:每读取100个字节,则滚动条增加一格。 根据以上的说明,详细阐述该结合使用哪几种设计模式来实现以上的开发框架。 5根据以下场景说明,请选用最佳的设计模式,并说明
26、该设计模式的原理及其优缺点? 场景:你在淘宝网上开了一间个人网店,你与买家之间不是面对面的现金交易,而是通过淘宝网的支付宝系统进行电子货币虚拟交易。你网店的营业金额从支付宝里取,买家也把应支付的金额交给支付宝。 适配器模式,一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。6根据以下场景说明,请选用最佳的设计模式,并说明该设计模式的原理及其优缺点? 场景:你拿出上次旅行时所拍摄的个人写真照片,但你发觉你看来看去都不顺眼,于是你到礼品店买了个相框,结果你发现相框整体感还是达不到你的要求,所以你在相框上贴了一些小东西。经过你一番的努力,相框的
27、整体感觉终于符合你的期望了。装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。 7根据以下场景说明,请选用最佳的设计模式,并说明该设计模式的原理及其优缺点? 场景:你与家人商量周末自驾一同前往海滩度假,以下是你和家人的对话. 妹妹:“我想把芭比娃娃带上车。” 我:“好好,还有呢?” 妈妈:“得把家里的个人日用品带上车。” 我:“好好,还有呢?” 爸爸:“车上得备上几瓶好酒。” 我:“好好,还有呢?” . 到了周末,我把所有的东西一件一件装上
28、车,一路颠簸终于到了海滩。迭代子模式:迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。8根据以下场景说明,请选用最合适的设计模式,并阐述该设计模式的原理及其优缺点? 场景:假设某天你请朋友吃饭,麦当劳的鸡翅和肯德基的鸡翅都是朋友爱吃的东西,虽然口味有所不同,但不管你带朋友去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1