A.使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的精合关系B.提供一种方法顺序访问一个聚合对象中各个元素而又不需暴露该对象的内部表示C.允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类D.在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态
单项选择题以下意图()可用来描述访问者(Visitor )。
A.定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对都得到通知并被自动更新B.表示一个作用于某对象结构中的各元素的操作C.在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态D.用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象
单项选择题以下意图()可用来描述解释器(Interpreter)。
A.将抽象部分与它的实现部分分离,使它们都可以独立变化B.给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子C.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示D.为其他对象提供一种代理以控制对这个对象的访问
单项选择题以下意图()可用来描述中介者(Mediator)。
A.提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示B.将抽象部分与它的实现部分分离,使它们都可以独立变化C.定义一个用于创建对象的接口,让子类决定实例化哪一个类D.用一个中介对象来封装一系列的对象交互
单项选择题关于模式适用性,()不适合使用职责链(Chain of Responsibility)模式。
A.有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定B.在需要用比较通用和复杂的对象指针代替简单的指针的时候C.用户想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求D.可处理一个请求的对象集合应被动态指定
单项选择题关于模式适用性,以下()不适合使用模板方法(Template Method)模式。
A.一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现B.当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变C.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码D.控制子类扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展
单项选择题以下意图()可用来描述命令(Command)模式。
A.将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作B.定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换,本模式使得算法可独立于使用它的客户而变化C.为其他对象提供一种代理以控制对这个对象的访问D.保证一个类仅有一个实例,并提供一个访问它的全局访问点
单项选择题关于模式适用性,以下()适合使用组合(Composite)模式。
A.用户想使用一个已经存在的类,而它的接口不符合用户的需求B.当一个类的实例只能有几个不同状态组合中的一种时C.用户想表示对象的部分-整体层次结构D.一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为
单项选择题如果有一个2MB 的文本(英文字母),为了对其中的字母进行分类和计数,若为文本中的每个字母都定义一个对象显然不合实际,对与该问题最好可使用的模式是()。
A.装饰(Decorator)模式B.享元(Flyweight )模式C.合成(Composite)模式D.命令(Command)模式
单项选择题关于模式适用性,以下()不适合使用Flyweight(享元)模式。
A.一个应用程序使用了大量的对象B.完全由于使用大量的对象,造成很大的存储开销C.对象的大多数状态都可变为外部状态D.用户想使用一个已经存在的类,而它的接口不符合用户的需求
单项选择题以下()用来描述工厂方法(Factory Method)模式。
A.提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类B.表示一个作用于某对象结构中的各元素的操作。它使用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作C.定义一个用于创建对象的接口,让子类决定实例化哪一个类。该模式使一个类的实例化延迟到其子类D.定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化