设计模式考点

设计模式上午大概4分+下午两大题30分(java和c++) 对各种设计模式的描述(包括适用情况和意图) 创建型设计模式 工厂模式( )
**意图:**定义一个用于创建对象的接口 , 让子类决定实例化哪一个类 。使一个类的实例化延迟到其子类 。
题目选项描述
1、当一个类希望由它的子类来指定它所创建的对象的时候
抽象工厂模式( )
**意图:**提供一个创建一系列相关或相互依赖对象的接口 , 而无须指定它们具体的类 。
题目选项描述
1、提供创建一系列相关或相互依赖的对象的接口 , 而无需指定这些对象所属的具体类
2、当一个系统应该独立于它的产品创建、构成和表示时
3、当要强调一系列相关的产品对象的设计以便进行联合使用时
4、一个系统要由多个产品系列中的一个来配置时
5、为图形用户界面(GUI)组件定义不同平台的并行类层次结构
生成器模式(建造者模式)()
**意图:**将一个复杂对象的构建与它的表示分离 , 使得同样的构建过程可以创建不同的表示 。
题目选项描述
1、当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时
2、当构造过程必须允许被构造的对象有不同的表示时
3、将一个复杂对象的构建与其表示分离 , 使得同样的构建过程可以创建不同的表示
4、适用于抽象复杂对象的构建步骤和基于构建过程的具体实现构建复杂对象的不同表示
原型模式()
**意图:**用原型实例指定创建对象的种类 , 并且通过复制这些原型创建新的对象 。
题目选项描述
一个类的实例只能有几个不同状态组合中的一种
适用性
1、当一个系统应该独立于它的产品创建、构成和表示时 。
2、当要实例化的类是在运行时刻指定时 , 例如 , 通过动态装载 。
3、为了避免创建一个与产品类层次平行的工厂类层次时 。
4、当一个类的实例只能有几个不同状态组合中的一种时 。建立相应数目的原型并克隆它们 , 可能比每次用合适的状态手工实例化该类更方便一些 。
单例模式()
**意图:**保证一个类仅有一个实例 , 并提供一个访问它的全局访问点 。
题目选项描述
1、它能够保证一个类只产生唯一的一个实例
2、一个类仅有一个实例
适用性
1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时 。
2、当这个唯一实例应该是通过子类化可扩展的 , 并且客户无须更改代码就能使用一个扩展的实例时 。
结构型设计模式 适配器模式()
**意图:**将一个类的接口转换成客户希望的另外一个接口 。模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 。
题目选项描述
1、将一个对象加以包装以给客户提供其希望的另外一个接口
2、想使用一个已经存在的类 , 而其接口不符合要美
3、使所有接口不兼容类可以一起工作
4、将一个类的接口转换成客户希望的另一个接口
适用性
1、想使用一个已经存在的类 , 而它的接口不符合要求 。
2、创建一个可以服用的类 , 该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作 。
3、(仅适用于对象)想使用一个已经存在的子类 , 但是不可能对每一个都进行子类化以匹配它们的接口 。对象适配器可以适配它的父类接口 。