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

【Java代码】
import java.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 buildPartA()
(2)Product getResult()
(3)product.setPartA
(4)product.setPartB
(5)builder.buildPartA();
或builder.buildPartB()
本题考查的是面向对象程序设计,是JAVA语言与设计模式的结合考查。本题涉及的设计模式是构建器模式,将复杂类的构造过程推迟到子类实现。
对于第一空、第二空,根据实现接口的类,补充其接口缺失的方法,因此,空(1)和空(2)分别填写void buildPartA()和Product getResult(),二者可以互换;
对于第三空、第四空,是根据product类方法进行的补充,与具体产品的实现保持一致,因此,分别填写,product.setPartA,product.setPartB;
对于第五空,由于在填空后面跟随的是代码省略,因此题目并不严谨,缺失的语句可以有builder.buildPartA();builder.buildPartB()。
包含此试题的试卷
你可能感兴趣的试题

-
- A.V(S2)和P(S4)
- B.P(S2)和V(S4)
- C.P(S2)和P(S4)
- D.V(S2)和V(S4)
- 查看答案

-
- A.V(S1)P(S2)和V(S3)
- B.P(S1)V(S2)和V(S3)
- C.V(S1)V(S2)和V(S3)
- D.P(S1)P(S2)和V(S3)
- 查看答案

-
- A.P(S4)和V(S4)V(S5)
- B.V(S5)和P(S4)P(S5)
- C.V(S3)和V(S4)V(S5)
- D.P(S3)和P(S4)V(P5)
- 查看答案

-
- A.P(S3)和V(S4)V(S5)
- B.V(S3)和P(S4)P(S5)
- C.P(S3)和P(S4)P(S5)
- D.V(S3)和V(S4)V(S5)
- 查看答案

-
- A.P(S2)和P(S4)
- B.P(S2)和V(S4)
- C.V(S2)和P(S4)
- D.V(S2)和V(S4)
- 查看答案