某模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。以下( )情况适合选用该模式。 ①抽象复杂对象的构建步骤 ②基于构建过程的具体实现构建复杂对象的不同表示 ③一个类仅有一个实例 ④一个类的实例只能有几个不同状态组合中的一种A.①② B.②③ C.③④ D.①④

题目
某模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。以下( )情况适合选用该模式。
①抽象复杂对象的构建步骤
②基于构建过程的具体实现构建复杂对象的不同表示
③一个类仅有一个实例
④一个类的实例只能有几个不同状态组合中的一种

A.①②
B.②③
C.③④
D.①④

相似考题
更多“某模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。以下( )情况适合选用该模式。 ”相关问题
  • 第1题:

    创建型设计模式与对象的创建有关,按照所用的范围分为面向类和面向对象两种。其中,( )模式是创建型类模式。

    A.工厂方法(Factory Method)
    B.构建器(Builder)
    C.原型(Prototype)
    D.单例(Singleton )

    答案:A
    解析:
    一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。 工厂方法模式(Factory Method) 用于创建对象的接口,让子类决定实例化哪一个类,它使一个类的实例化延迟到其子类。

  • 第2题:

    ( )模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可以独立于使用它们的客户而变化。以下(请作答此空)情况适合选用该模式。①一个客户需要使用一组相关对象②一个对象的改变需要改变其他对象③需要使用一个算法的不同变体④许多相关的类仅仅是行为有异


    A.①②
    B.②③
    C.③④
    D.①④

    答案:C
    解析:
    命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。责任链:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。策略模式:定义一系列的算法,把每一个算法封装起来,并且是它们可互相替换。本模式使得算法可独立于使用它的客户而变化。

  • 第3题:

    欲开放一个绘图软件,要求使用不同的绘图程序绘制不同的图形,该绘图软件的扩展性要求将不断扩充新的图形和新的绘图程序,以绘制直线和图形为例,得到如下图所示的类图,该设计采用( )模式将抽象部分与其实现部分分离,使它们都可以独立的变化。其中( )定义了实现类接口,该模式适用于(请作答此空)的情况,该模式属于( )模式。

    A.不希望在抽象和它的实现部分之间有一个固定判定关系
    B.想表示对象的部分-整体层次结构
    C.想使用一个已经存在的类,而它的接口不符合要求
    D.在不影响其他对象的情况下,以动态透明的方式给单个对象添加职责

    答案:A
    解析:
    桥接模式模式属于结构型对象模式,可以将抽象部分与其实现部分分离,使它们都可以独立的变化。桥接模式适用于不希望在抽象和它的实现部分之间有一个固定判定关系。

  • 第4题:

    ( )模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创 建不同的表示。

    A.生成器(Builder)
    B.工厂方法(FactoryMethod)
    C.原型(Prototype)
    D.单例(Singleton)

    答案:A
    解析:
    生成器模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

  • 第5题:

    阅读下列说明和 Java 代码,将应填入(n)处的字句写在答题纸的对应栏内。
    【说明】
    生成器( Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。图 6-1 所示为其类图。



    阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。

    【说明】

    ???? 生成器(Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。图5-1所示为其类图。

    ?

    【C++代码】

    #include

    #include

    using namespace std;
    class Product {
    private:?
    string partA, partB;
    public:?
    Product() {?? }? ?
    void setPartA(const string& s) { PartA = s;}
    ???? void setPartB(const string& s) { PartB
    = s;}? ?
    //? 其余代码省略
    };
    class Builder {
    public:? ? ??
    (1)??
    ;?
    virtual void buildPartB()=0;? ? ?
    (2)??
    ;
    };
    class ConcreteBuilder1 : public Builder {
    private:?
    Product*?? product;
    public:
    ConcreteBuilder1() {product = new Product();???? }
    void buildPartA() {????? (3)???? ("Component
    A"); }?
    void buildPartB() {????? (4)???? ("Component
    B"); }??
    Product* getResult() { return product; }
    //? 其余代码省略
    };
    class ConcreteBuilder2 : public Builder {? ??? ? ? ?
    /*??? 代码省略??? */
    };
    class Director {
    private:? ??
    Builder* builder;
    public:??
    Director(Builder* pBuilder) { builder= pBuilder;}? ??
    void construct() {
    ????????????????? (5)???? ;
    ?????????????? //? 其余代码省略? ?
    }??
    //? 其余代码省略
    };
    int main() {? ? ??
    Director* director1 = new Director(new ConcreteBuilder1());? ?
    director1->construct();? ? ??
    delete director1;? ? ?
    return 0;
    【Java代码】
    import jav(6)A.util.*;
    class Product {? ? ? ?
    private String partA;? ? ? ?
    private String partB;? ? ? ??
    public Product() {}? ? ??
    public void setPartA(String s) { partA = s; }? ? ? ?
    public void setPartB(String s) { partB = s; }
    }
    interface Builder {? ?
    public?????? (1)???? ;? ??
    public void buildPartB();? ? ??
    public?????? (2)???? ;
    }
    class ConcreteBuilder1 implements Builder {? ? ? ?
    private Product product;? ? ? ?
    public ConcreteBuilder1() { product = new Product();?? }? ? ? ??
    public void buildPartA() {????????
    (3)??
    ("Component A"); }
    public void buildPartB() {???? ????(4)?? ("Component B"); }? ? ??
    public Product getResult() { return product;}
    }
    class ConcreteBuilder2 implements Builder {?? ? ? ? ?
    //? 代码省略
    }
    class Director {? ? ? ?
    private Builder builder;? ? ? ?
    public Director(Builder builder) {this.builder = builder; }
    public void construct() {
    ? ? ? ? ? ? ? ? ? (5)???? ;
    ? ? ? ? ? ? ? //? 代码省略? ? ??
    }
    }
    class Test {? ? ??
    public static void main(String[] args) {
    ???????????????? Director director1 = new
    Director(new ConcreteBuilder1());
    ???????????????? director1.construct();? ? ? ??
    }


    答案:
    解析:
    (1)void buildPart A()
    (2) Product getResult()
    (3)product.setPartA
    (4)product.setPartB
    (5)builder.buildPartA();
    builder.buildPartB();
    Product p=builder.getResult();

  • 第6题:

    设计模式基于面向对象技术,是人们在长期的开发实践中良好经验的结晶,提供了一个简单、统一的描述方法,使得人们可以复用这些软件设计办法、过程管理经验。按照设计模式的目的进行划分,现有的设计模式可以分为创建型、()和行为型三种类型。其中()属于创建型模式,(请作答此空 )属于行为型模式。()模式可以将一个复杂的组件分成功能性抽象和内部实现两个独立的但又相关的继承层次结构,从而可以实现接口与实现分离。


    A.Decorator
    B. Composite
    C. Memento
    D. Builder


    答案:C
    解析:
    设计模式包括:创建型、结构型、行为型。Singleton是单例模式,属于创建型设计模式。Memento是备忘录模式,属于行为型设计模式。Bridge是桥接模式,它的特点是实现接口与实现分离。

  • 第7题:

    原型模式适合大型复杂系统的构建。


    正确答案:错误

  • 第8题:

    以下意图哪个是用来描述BRIDGE(桥接)?()

    • A、提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
    • B、将抽象部分与它的实现部分分离,使它们都可以独立地变化
    • C、将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
    • D、动态地给一个对象添加一些额外的职责

    正确答案:B

  • 第9题:

    关于模式适用性,在以下情况可以使用builder模式?()

    • A、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时
    • B、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时
    • C、当构造过程必须允许被构造的对象有不同的表示时
    • D、一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为

    正确答案:B

  • 第10题:

    单选题
    关于模式适用性,在以下情况可以使用builder模式?()
    A

    当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时

    B

    当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时

    C

    当构造过程必须允许被构造的对象有不同的表示时

    D

    一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为


    正确答案: C
    解析: 暂无解析

  • 第11题:

    单选题
    以下选项哪个是用来描述组合模式()
    A

    为其他对象提供一种代理以控制对这个对象的访问

    B

    运用共享技术有效地支持大量细粒度的对象

    C

    将对象组合成树形结构以表示“部分-整体”的层次结构

    D

    将一个复杂对象的构建与它的表示分离


    正确答案: C
    解析: 暂无解析

  • 第12题:

    单选题
    以下意图哪个是用来描述策略模式()
    A

    将抽象部分与它的实现部分分离,使它们都可以独立地变化

    B

    将一个复杂对象的构建与它的表示分离

    C

    定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换


    正确答案: B
    解析: 暂无解析

  • 第13题:

    (请作答此空)模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可以独立于使用它们的客户而变化。以下( )情况适合选用该模式。①一个客户需要使用一组相关对象②一个对象的改变需要改变其他对象③需要使用一个算法的不同变体④许多相关的类仅仅是行为有异

    A.命令(Command)
    B.责任链(ChainofResponsibility)
    C.观察者(Observer)
    D.策略(Strategy)

    答案:D
    解析:
    命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。责任链:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。策略模式:定义一系列的算法,把每一个算法封装起来,并且是它们可互相替换。本模式使得算法可独立于使用它的客户而变化。

  • 第14题:

    某模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可以独立于使用它们的客户而变化。以下( )情况适合选用该模式。
    ①一个客户需要使用一组相关对象
    ②一个对象的改变需要改变其它对象
    ③需要使用一个算法的不同变体
    ④许多相关的类仅仅是行为有异

    A.①②
    B.②③
    C.③④
    D.①④

    答案:C
    解析:
    策模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换策模式让算法独立于使用它的客户而独立变化
    应用场景:
    1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为
    2、 需要在不同情况下使用不同的策(算法),或者策还可能在未来用其它方式来实现
    3、 对客户隐藏具体策(算法)的实现细节,彼此完全独立

  • 第15题:

    阅读下列说明和 C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
    【说明】
    生成器( Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。图 5-1 所示为其类图。



    【C++代码】
    #include
    #include
    using namespace std;
    class Product {
    private:? ??
    string partA, partB;
    public:
    Product() {?? }
    ? ? ?void
    setPartA(const string& s) { PartA = s;}
    ???? void
    setPartB(const string& s) { PartB = s;}
    //? 其余代码省略
    };
    class Builder {
    public:
    ??????? (1)?? ;
    virtual void buildPartB()=0;
    ??????? (2)?? ;
    };
    class ConcreteBuilder1 : public Builder {
    private:
    Product*?? product;
    public:
    ConcreteBuilder1() {product = new Product();???? }
    ??? void
    buildPartA() {????? (3)???? ("Component A"); }
    ??? void
    buildPartB() {????? (4)???? ("Component B"); }
    Product* getResult() { return product; }
    //? 其余代码省略
    };
    class ConcreteBuilder2 : public Builder {? ??
    /*??? 代码省略??? */
    };
    class Director {
    private:?
    Builder* builder;
    public:? ?
    Director(Builder* pBuilder) { builder= pBuilder;}
    ???? void
    construct() {
    ? ? ? ? ? ? ? (5)???? ;? ? ?
    //? 其余代码省略
    ????? }
    //? 其余代码省略
    };
    int main() {
    Director* director1 = new Director(new ConcreteBuilder1());?
    director1->construct();? ?
    delete director1;? ??
    return 0;


    答案:
    解析:
    (1) virtual void buildPartA() = 0
    (2) virtual Product * getResult() = 0
    (3) product->setPartA
    (4) product->setPartB
    (5) builder->buildPartA();
    builder->buildPartB();
    Product* p = builder->getResult();

  • 第16题:

    欲开放一个绘图软件,要求使用不同的绘图程序绘制不同的图形,该绘图软件的扩展性要求将不断扩充新的图形和新的绘图程序,以绘制直线和图形为例,得到如下图所示的类图,该设计采用( )模式将抽象部分与其实现部分分离,使它们都可以独立的变化。其中( )定义了实现类接口,该模式适用于( )的情况,该模式属于(请作答此空)模式。

    A.创建型对象
    B.结构型对象
    C.行为型对象
    D.结构类型

    答案:B
    解析:
    桥接模式模式属于结构型对象模式,可以将抽象部分与其实现部分分离,使它们都可以独立的变化。桥接模式适用于不希望在抽象和它的实现部分之间有一个固定判定关系。Drawing类是抽象类,Shape类是实现类,在桥接图中由抽象类指向实现类。适配器模式将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。装饰模式动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活。组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。

  • 第17题:

    以下设计模式中,( )模式使多个对象都有机会处理请求。将这些对象连成一条链。并沿着这条链传递该请求。直到有一个对象处理为止。从而避免请求的发送者和接收者之间的耦合关系。( )模式提供一种方法顺序访问一个聚合对象中的各个元素。且不需要暴露该对象的内部表示。这两种模式均为(请作答此空)

    A.创建型对象模式
    B.结构型对象模式
    C.行为型对象模式
    D.行为型类模式

    答案:C
    解析:
    责任链模式:通过给多个对象处理请求的机会,减少请求的发送者与接受者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求。迭代器模式:提供一种方法来顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示命令模式:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作解释器模式:给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子责任链模式和迭代器模式都是行为型对象模式

  • 第18题:

    设计模式基于面向对象技术,是人们在长期的开发实践中良好经验的结晶,提供了一个简单、统一的描述方法,使得人们可以复用这些软件设计办法、过程管理经验。按照设计模式的目的进行划分,现有的设计模式可以分为创建型、(请作答此空 )和行为型三种类型。其中()属于创建型模式,()属于行为型模式。()模式可以将一个复杂的组件分成功能性抽象和内部实现两个独立的但又相关的继承层次结构,从而可以实现接口与实现分离。

    A. 合成型
    B. 组合型
    C. 结构型
    D. 聚合型

    答案:C
    解析:
    设计模式包括:创建型、结构型、行为型。Singleton是单例模式,属于创建型设计模式。Memento是备忘录模式,属于行为型设计模式。Bridge是桥接模式,它的特点是实现接口与实现分离。

  • 第19题:

    以下意图哪个是用来描述PROXY(代理)?()

    • A、用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
    • B、运用共享技术有效地支持大量细粒度的对象
    • C、为其他对象提供一种代理以控制对这个对象的访问
    • D、将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

    正确答案:C

  • 第20题:

    以下意图哪个是用来描述BUILDER(生成器)?()

    • A、定义一个用于创建对象的接口,让子类决定实例化哪一个类
    • B、将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
    • C、保证一个类仅有一个实例,并提供一个访问它的全局访问点
    • D、运用共享技术有效地支持大量细粒度的对象

    正确答案:B

  • 第21题:

    判断题
    原型模式适合大型复杂系统的构建。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第22题:

    单选题
    以下意图哪个是用来描述PROXY(代理)?()
    A

    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

    B

    运用共享技术有效地支持大量细粒度的对象

    C

    为其他对象提供一种代理以控制对这个对象的访问

    D

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示


    正确答案: A
    解析: 暂无解析

  • 第23题:

    单选题
    以下意图哪个是用来描述INTERPRETER(解释器)?()
    A

    将抽象部分与它的实现部分分离,使它们都可以独立地变化

    B

    给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子

    C

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

    D

    为其他对象提供一种代理以控制对这个对象的访问


    正确答案: B
    解析: 暂无解析