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

admin2019-10-08  19

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

【C++代码】
    #include<iostream>
    #include<string>
    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);
    //其余代码省略
    }
    //其余代码省略
    };
    intmain() {
    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();

解析
转载请注明原文地址:https://kaotiyun.com/show/LsxZ777K
0

相关试题推荐
最新回复(0)