一、1. 设计模式一般用来解决什么样的问题: A.同一问题的不同表相 2. 下列属于面向对象基本原则的是: C.里氏代换
3. Open-Close原则的含义是一个软件实体:A.应当对扩展开放,对修改关闭.
4. 当我们想创建一个具体的对象而又不希望指定具体的类时,使用(A)模式。A.创建型 5. 要依赖于抽象不要依赖于具体。即针对接口编程不要针对实现编程:(D)依赖倒转原则 6. 依据设计模式思想,程序开发中应优先使用的是( A )关系实现复用。A, 委派 7. 设计模式的两大主题是( D ) D.系统复用与系统扩展 8. 单体模式中,两个基本要点(AB)和单体类自己提供单例A .构造函数私有 B.唯一实例 9. 下列模式中,属于行为模式的是( B ) B观察者
10. “不要和陌生人说话” 是( D )原则的通俗表述 D.迪米特
1. 软件体系结构是指一个系统的有目的的设计和规划,这个设计规划既不描述 活动 ,也不描述 系统怎样开发 ,它只描述系统的 组成元素 及其相互的 交互协作 。 2.一个UML模型只描述了一个系统 要做什么 ,它并没告诉我们系统是 怎么做 。 3.接口是可以在整个模型中反复使用的一组行为,是一个没有 属性 而只有 方法 的类。 4.多重性指的是,某个类有 多 个对象可以和另一个类的 一 对象关联。 5.当一个类的对象可以充当多种角色时, 自身 关联就可能发生。
6.在泛化关系中,子类 可以替代 父类。后前者出现的可以相同地方。反过来却不成立。 7.最通常的依赖关系是一个类操作的 形构 中用到了 另一个类 的定义。 8.组成是 强类型 的聚集,因为聚集中的每个部分体只能属于 一个 整体。 9.实现的符号和继承的符号有相似之处,两者的唯一差别是实现关系用 虚线 表示,继承关系用 实线 表示。
10. 设计模式中应优先使用 对象组合 而不是 类继承 。 1. 适配器模式属于创建型模式结构型( F ) 2. 在设计模式中,“效果”只是指“原因和结果”( T ) 3. 设计模式使代码编制不能真正工程化 ( T )
4. 面向对象语言编程中的异常处理,可以理解为责任链模式(T )
5. 反模式就是反对在软件开发过程中使用设计模式分析:反模式用来解决问题的带有共性
的不良方法(F )
1. 什么是设计模式?设计模式目标是什么?
答:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解,保证代码可靠性。 2. 设计模式中一般都遵循的原则有什么?
答:开闭原则、根据场景进行设计原则、优先组合原则、包容变化原则 3. “Gang of Four”针对“创建优秀面向对象设计”建议了哪些策略?
答:针对接口编程、优先使用对象组合而不是类继承,找到并封装变化点。 4. 面向对象系统中功能复用的两种最常用技术是什么?
答:类继承和对象组合,类继承允许你根据其他类的实现来定义一个类的实现。父类的内部细节对子类可见。类继承是在编译时刻静态定义的,且可直接使用,类继承可以较方便地改变被复用的实现。对象组合是类继承之外的另一种复用选择。新的更复杂的功能可以通过组装或组合对象来获得。对象组合要求被组合的对象具有良好定义的接口。 5. 只根据抽象类中定义的接口来操纵对象有什么好处?
答:1) 客户无须知道他们使用对象的特定类型,只须对象有客户所期望的接口。
2) 客户无须知道他们使用的对象是用什么类来实现的,他们只须知道定义接口的抽象类。 五、应用题(分值15)
公司架构:经理、工程师、技师和后勤人员都是公司的雇员,经理管理工程师、技师和后勤人员。高层经理领导较低级别的经理。典型层次图如下:可以使用哪种设计模式实现公司的层级关系?并说明为什么?
组合模式,第一,其公司关系架构为树形结构;第二,其表示了部分-整体关系(自己扩展)
1. 在观察者模式中,表述错误的是( C )C. 观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行。
2. 对于违反里式代换原则的两个类,可以采用的候选解决方案错误的是:( D )D. 以上方案错误
3. 下列模式属于结构型设计模式的是( AB )A. Composite B. 享元(Flyweight)模式 4. 关于继承表述错误的是:( D )D. 继承本质上是“白盒复用”,对父类的修改,不会影响到子类。
5. 对于依赖倒转的表述错误的是(C)C. 从选项B的角度论述,一个对象可以有多个接口。 6. 可以使用哪一种设计模式限制类的实例唯一?( D )D.单体模式 7. Java数据库连接库JDBC用到哪种设计模式( B )?B.工厂方法
8. 关于运用GOF工厂方法的效果Consequences,说法不正确的是(C)有利于产品的一致性 8. 在应用程序中可用哪些设计模式分离出算法?( B )B. 策略模式 9. 工厂方法也称为( D )D. 虚构造器
10. 可以使用哪种设计模式将抽象和实现解耦,使得抽象和实现可以独自变化?( B )桥接模式
1. 面向对象的七条基本原则包括:开闭原则,里式代换原则,合成聚合原则以及(迪米特法则 ),( 依赖倒转 ),( 单一原则 ),( 接口隔离 )。
2. 在存在继承关系的情况下,方法向( 超类 )方向集中,而数据向( 子类 )方向集中。 3. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是( 继承 )关系,而对象适配器采用的是(组合聚合)关系。 4. 设计模式的四个基本要素是(名字 ),(意图 ),(问题 )和( 解决方案 )。 5. .创建型模式的根本意图是要把( 对象的创建 )和( 使用分离 )的责任进行分离,从而降低系统的( 耦合度 )。
6. 工厂模式分为(简单工厂 ),( 工厂方法 ),( 抽象工厂 )三种类型。 7. 门面模式是( 迪米特 )法则的典型运用
8. MVC模型的基本工作原理是基于( 观察者 )模式,实现是基于( 命令 )模式 9. 设计模式的思想根源是(开闭 )基本原则的宏观运用,本质上是没有任何模式的,发现模式的人永远是大师,而死守模式的人,最对只能是一个工匠. 1. 在MVC模型中M、V、C分别指什么?简述它们之间的关系? M: 模型(Model), V:视图(View) C:控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。 2. 什么是开闭原则? 软件实体应当对扩展开放,对修改关闭,软件系统中包含的各种组件,例如模块(Modules)、类(Classes)以及功能(Functions)等,应该在不修改现有代码的基础上,引入新功能。开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的修改是封闭的,即不应该修改原有的代码。 3.设计数据库的系统日志,要考虑使用哪些设计模式? 答:命令模式,备忘录模式,外观模式 4. 使用工厂模式的主要原因是什么?
工厂模式定义:提供创建对象的接口. 因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所
以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
5. 在面向对象设计中,《编译原理》的有限状态机可以什么样解决方案完成? 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒问:(1)设计可能用到什么设计模式?(2)画出其类图。
观察者模式 分析:要有联动性,老鼠和主人的行为是被动的;考虑可扩展性,
猫的叫声可能引起其他联动效应。