生成器(Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样

练习题库2022-08-02  29

问题 生成器(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()。
转载请注明原文地址:https://www.tihaiku.com/congyezige/2410368.html

最新回复(0)