(2012年下半年下午试题六)阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQL Server和Access两

admin2018-07-27  31

问题 (2012年下半年下午试题六)阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
    【说明】
    现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQL Server和Access两种数据库以及系统中的数据库表Department为例,其类图如图10.25所示。

【Java代码】
import java.util.*;
class Department{/*代码省略*/}
interface  IDepartment {
   ______(1);
    ______(2);
}
class  sq1serverDepartment: ______(3)   {
public:
    void Insert(Department  department){
    System.out.println(’’Insert a record into Department in SQL Server!\n’’);
    //其余代码省略
    }
    public Department GetDepartment(int  id){
    /*代码省略*/
    }
  }
  class AccessDepartment: ______(4) {
    public void Insert(Department department){
    System.out.println(’’Insert a record into Department in ACCESS!\n’’);
    //其余代码省略
    }
    public Department GetDepartment(int  id){
    /*代码省略*/
    }
  };
     ______(4)   {
     ______(6);
  }
  class  Sq1ServerFactory implements  IFactory{
    public  IDepartment  CreateDepartment(){
    return new  Sq1serVerDepartment();
    }
    //其余代码省略
};
class AccessFactory implements  IFactory {
    public  IDepartment CreateDepartment(){
    return new AccessDepartment();
    }
    //其余代码省略
};

选项

答案(1)void Insert(Department department) (2)Department GetDepartment(int id) (3)implements IDepartment (4)implements IDepartment (5)interface Ifactory (6)IDepartment CreateDepartment()

解析 本题考查抽象工厂设计模式的概念及其应用。
抽象工厂设计模式的意图是:提供一个创建一系列相关或相互依赖的对象,而无须指出它们具体的类。在如下情况下应当考虑使用抽象工厂模式。
    当一个系统要独立于它的产品的创建、组合和表示时。
    当一个系统要由多个产品系列中的一个来配置时。
    当需要强调一系列相关的产品对象的设计以便进行联合使用时。
    当想提供一组对象而不显示它们的实现过程,只显示它们的接口时。
    抽象工厂设计模式的类图如图10.26所示,其中:
    Abstractory为抽象工厂,声明抽象产品的方法;
    ConcreteFactory为具体工厂,执行生成抽象产品的方法,生成一个具体的产品;
    ProductA和ProductB为抽象产品,为一种产品声明接口;
    ProductA1/A2/B1/B2为具体产品,定义具体工厂生成的具体产品的对象,实现产品接口。

    图10.25中的IFactory对应图10.26中的Abstractory,Sq1serverFactory和AccessFactory对应图10.26中的ConcreteFactory,SqlserverDepartment和AccessDepanment对应图10.26中的ProductA1/A2/B1/B2,而IDepartment对应图10.26中的ProductA和ProductB。
    空(1)处和空(2)处考查接口IDepartment中方法的定义。由其子类Sq1serverDepartment和AccessDepanment中方法的定义,可知空(1)处应填入void Insert(Department department),空(2)处应填入Department GetDepartment(int id)。
    空(3)处和空(4)处考查接口IDepartment的实现。接口的实现是在一个类的声明中使用关键字“implements”来表示该类使用某个已经定义的接口,然后即可在该类体中使用接口中定义的常量,而且必须实现接口中定义的所有方法。因此,窄(3)处和空(4)处都应填入implements IDepartment。
    由于所给程序中缺少接口IFactory的定义,因此空(5)处应为定义接口IFactory,应填入interface IFactory。由于类Sq1serverFactory和AccessFactory中必须实现接口IFactory中定义的所有方法,观察这两个类中的方法可知,空(6)处应填入IDepartment CreateDepartment()。
转载请注明原文地址:https://kaotiyun.com/show/szxZ777K
0

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