阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某软件系统中,已设计并实现了用于显示地址信息的类Address(如图6-1所示),现要求提供基于Dutch语言的地址信息显示接口。为了实现该要求并考虑到以后可能还会出现新的

admin2017-09-13  44

问题 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某软件系统中,已设计并实现了用于显示地址信息的类Address(如图6-1所示),现要求提供基于Dutch语言的地址信息显示接口。为了实现该要求并考虑到以后可能还会出现新的语言的接口,决定采用适配器(Adapter)模式实现该要求,得到如图6-1所示的类图。

[Java代码]
    import java.util.*;
    class Address{
    public void street()    {  //实现代码省略    }
    public void zip()    {    //实现代码省略    }
    public void city()    {  //实现代码省略    }
  //其他成员省略
  }
  C1ass DutchAddress{
    public void straat()    {  //实现代码省略    }
    public void postcode()  {//实现代码省略    }
    public void plaats()    {//实现代码省略    }
//其他成员省略
}
class DutchAddressAdapter extends DutchAddress  {
    private91);
    public DutchAddressAda一3ter(Address addr){
    address=addr;
    }
    public void straat(){
    (2)    ;
    }
    public void postcode(){
    (3)    ;
    }
    public void plaats(){
    (4);
    }
//其他成员省略
}
clas s Test{
    public static void main(String[]args){
    Address addr=new Address();
    (5)    ;
    System.out.println(“\n The DutchAddress\n”);
    testDutch(addrAdapter);
    }
    static void testDutch(DutchAddress addr){
    addr.straat();
    addr.postcode();
    addr.plaats();
    }
    }

选项

答案(1)Address address (2)address.street() (3)address.zip() (4)address.city() (5)DutchAddress addrAdapter=new DutchAddressAdapter(addr)

解析 本题考查Adapter(适配器)模式的基本概念和应用。
Adapter模式的设计意图是,将一个类的接口转换成客户希望的另外一个接口。
Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
Adapter模式有两种实现方式。类适配使用多重继承对一个接口与另一个接口进行匹配,其结构如图6—2所示。

对象适配器依赖于对象组合,其结构如图6.3所示。

Target定义Client使用的与特定领域相关的接口。
Client与符合Target接口的对象协同。
Adaptee定义一个已经存在的接口,这个接口需要适配。
Adapter对Adaptee的接口与Target接口进行适配。
Adapter模式适用于:
想使用一个已经存在的类,而它的接口不符合要求。
想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
(仅适用于对象Ad印ter)想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口。对象适配器可以适配它的父类接口。
本题中采用对象适配器,题中类DutchAdddressAdapter对应图6—3中的Adapter、DutchAddress对应图6.3中的Target、Address对应图6-3中的Adaptee。
    由图6.3可知,在Adapter中应该有一个Adaptee的对象,因此空(1)处应该填写的是Address的对象:Address address。
    空(2)~(4)考查父类中的3个方法在子类DutchAddressAdapter的实现方式。由图6.3可知,Adapter中方法的实现方式还是要借助于Adaptee中所提供的行为,也就是说,DutchAddressAdapter中3个方法的实现与Address是密不可分的。由此可知,空(2)~(4)分别应填入:address.street()、address.zip()和address.city()。
    第(5)空考查Adapter模式的使用。这里使用方法testDutch来进行测试,这个方法要求传递DutchAddress类型的参数,并且给出了实参的名字:addrAdatper。因此第(5)空应该填写的是addrAdapter的创建语句,这里需要使用到DutchAddress的构造函数。因此第(5)空应填写:DutchAddress addrAdapter=new DutchAddressAdapter(addr)。
转载请注明原文地址:https://jikaoti.com/ti/gMi7FFFM
0

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