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

题目

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

A.生成器(Builder)

B.工厂方法(Factory Method)

C.原型(Prototype)

D.单例( Singleton)


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

    在程序运行过程中,(49)将方法与特定的对象动态地联系在一起,使得不同的对象在使用同样的方法时,可以因对象的状态不同而产生不同的行为,从而使得方法对具体的对象具有个性。

    A.消息传递机制

    B.对象自身引用

    C.消息传递机制和对象自身引用

    D.参数多态


    正确答案:C
    解析:对象自身引用(Self-Reference)是OOPL中的一种特有结构。这种结构在不同的OOPL中有不同的名称,在C++和Java中称为this,使用的值通过消息传递机制提供。对象自身引用的值和类型分别扮演了两种意义的角色:对象自身引用的值使得方法体中引用的成员名与特定的对象,及相关对象自身引用的类型决定了方法体被实际共享的范围。对象自身引用机制使得在进行方法的设计和实现时并不需要考虑与对象联系的细节,而是从更高一级的抽象层次也就是类的角度来设计同类型对象的行为特征,从而使得方法在一个类及其子类的范围内具有共性。在程序运行过程中,消息传递机制和对象自身引用将方法与特定的对象动态地联系在一起,使得不同的对象在执行同样的方法体时,可以因对象的状态不同而产生不同的行为,从而使得方法对具体的对象具有个性。

  • 第2题:

    在道路运输行业信息管理平台的构建模式中,自下而上构建模式的缺点有()。

    A:构建周期长
    B:切合度不高
    C:构建总成本较高
    D:大量资源浪费
    E:出现不同管理系统难以兼容的问题

    答案:A,C,D,E
    解析:
    本题考查自下而上构建模式的内容。注意选项B是自上而下构建模式的缺点。

  • 第3题:

    阅读下列说明和 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();

  • 第4题:

    阅读下列说明和 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();

  • 第5题:

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


    正确答案:错误

  • 第6题:

    多态性使得一个属性或变量在同个时期表示不同类的对象。


    正确答案:错误

  • 第7题:

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

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

    正确答案:B

  • 第8题:

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

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

    正确答案:B

  • 第9题:

    单选题
    关于适配器模式(Adapter)说法正确的是()
    A

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

    B

    将一个接口转换成为客户想要的另一个接口

    C

    组合多个对象形成树形结构以表示整体-部分的结构层次。其对单个对象和组合对象的使用具有一致性

    D

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


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

  • 第10题:

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

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

    B

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

    C

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

    D

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


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

  • 第11题:

    判断题
    多态性使得一个属性或变量在同个时期表示不同类的对象。
    A

    B


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

  • 第12题:

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

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

    B

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

    C

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


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

  • 第13题:

    创建型设计模式抽象了实例化过程,帮助一个系统独立于如何创建、组合和表示它的那些对象。以下( )模式是创建型模式。

    A.组合(Composite) B.构建器(Builder)C.桥接(Bridge) D.策略(Strategy)


    正确答案:B

  • 第14题:

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

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

    答案:A
    解析:
    实用范围
    1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时
    2 当构造过程必须允许被构造的对象有不同表示时

  • 第15题:

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

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

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

  • 第16题:

    MVC模式的优点体现在()。

    • A、将表示层和处理层完全分开,提高了可靠性
    • B、可以多种view去访问相同的model,提高了复用性和适应性
    • C、清晰的分层同样使得代码清晰、程序的可维护性提高
    • D、不同的程序员可以各司其职,增加开发速度

    正确答案:A,B,C,D

  • 第17题:

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

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

    正确答案:C

  • 第18题:

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

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

    正确答案:B

  • 第19题:

    建造者模式的优点有哪些()

    • A、分步骤构建一个复杂的对象
    • B、应对“复杂对象各个部分”的频繁需求变动
    • C、用户使用不同的具体建造者即可得到不同的产品对象
    • D、如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大
    • E、如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制

    正确答案:A,B,C

  • 第20题:

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

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

    B

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

    C

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

    D

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


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

  • 第21题:

    多选题
    MVC模式的优点体现在()。
    A

    将表示层和处理层完全分开,提高了可靠性

    B

    可以多种view去访问相同的model,提高了复用性和适应性

    C

    清晰的分层同样使得代码清晰、程序的可维护性提高

    D

    不同的程序员可以各司其职,增加开发速度


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

  • 第22题:

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

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

    B

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

    C

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

    D

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


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

  • 第23题:

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

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

    B

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

    C

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

    D

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


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