阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
生成器(Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。图6-1所示为其类图。
阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
????生成器(Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。图5-1所示为其类图。
?
【C++代码】
#include<iostream>
#include<string>
usingnamespacestd;
classProduct{
private:?
stringpartA,partB;
public:?
Product(){??}??
voidsetPartA(conststring&s){PartA=s;}
????voidsetPartB(conststring&s){PartB
=s;}??
//?其余代码省略
};
classBuilder{
public:????
(1)??
;?
virtualvoidbuildPartB()=0;???
(2)??
;
};
classConcreteBuilder1:publicBuilder{
private:?
Product*??product;
public:
ConcreteBuilder1(){product=newProduct();????}
voidbuildPartA(){?????(3)????("Component
A");}?
voidbuildPartB(){?????(4)????("Component
B");}??
Product*getResult(){returnproduct;}
//?其余代码省略
};
classConcreteBuilder2:publicBuilder{???????
/*???代码省略???*/
};
classDirector{
private:???
Builder*builder;
public:??
Director(Builder*pBuilder){builder=pBuilder;}???
voidconstruct(){
?????????????????(5)????;
??????????????//?其余代码省略??
}??
//?其余代码省略
};
intmain(){????
Director*director1=newDirector(newConcreteBuilder1());??
director1->construct();????
deletedirector1;???
return0;
【Java代码】
importjav(6)A.util.*;
classProduct{????
privateStringpartA;????
privateStringpartB;?????
publicProduct(){}????
publicvoidsetPartA(Strings){partA=s;}????
publicvoidsetPartB(Strings){partB=s;}
}
interfaceBuilder{??
public??????(1)????;???
publicvoidbuildPartB();????
public??????(2)????;
}
classConcreteBuilder1implementsBuilder{????
privateProductproduct;????
publicConcreteBuilder1(){product=newProduct();??}?????
publicvoidbuildPartA(){????????
(3)??
("ComponentA");}
publicvoidbuildPartB(){????????(4)??("ComponentB");}????
publicProductgetResult(){returnproduct;}
}
classConcreteBuilder2implementsBuilder{??????
//?代码省略
}
classDirector{????
privateBuilderbuilder;????
publicDirector(Builderbuilder){this.builder=builder;}
publicvoidconstruct(){
?????????(5)????;
???????//?代码省略????
}
}
classTest{????
publicstaticvoidmain(String[]args){
????????????????Directordirector1=new
Director(newConcreteBuilder1());
????????????????director1.construct();?????
}
(1)void buildPart A() (2) Product getResult() (3)product.setPartA (4)product.setPartB (5)builder.buildPartA(); builder.buildPartB(); Product p=builder.getResult();