现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQL SerVer和Access两种数据库以及系统中的数据库表Depanment为例,其类图如图17—3所示。 [Java代码] import java.util

admin2014-11-13  36

问题 现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQL SerVer和Access两种数据库以及系统中的数据库表Depanment为例,其类图如图17—3所示。

[Java代码]
import java.util*;
clasS Department(/*代码省略*/)
interface  IDepartment(
    (1)   ;
    (2)    ;
}
class  SqlserVerDepar七men七:    (3)    {
public:
    void Insert(Department department){
    System.out.print in(”Insert a record into Department in SQL Server\n”);
    //其余代码省略
    }
    publ i c Department  GetDepar七men七(int  id)<
    /*代码省略*/
    }
}
Class AccessDepartment:    (4)    {
    public void Insert(Department department){
    system.out.print in(”Insert a record into Department in ACCESS I\n”};
    //其余代码省略
    }
    public Department GetDepar七ment(int  id)(
    /*代码省略*/
    }
};
  (5)  {
    (6)    ;
    }
    class  SqlSerVerFac七ory implementS  IFactory(
    public  工Department  CreateDepartment()(
    re turn new Sqls erverDepartment();
    }
    //其余代码省略
    };
    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 CreateDepartmento

解析 本题考查抽象工厂设计模式的概念及其应用。其类图如图17—4所示。

抽象工厂设计模式的意图是:提供一个创建一系列相关或相互依赖的对象,而无须指出它们具体的类。在如下情况下应当考虑使用抽象工厂模式:
     当一个系统要独立于它的产品的创建、组合和表示时;
     当一个系统要由多个产品系列中的一个来配置时:
     当需强调一系列相关的产品对象的设计以便进行联合使用时;
想提供一组对象而不显示它们的实现过程,只显示它们的接口时。
抽象工厂设计模式的类图如下所示,其中:
AbstractFactory抽象工厂,声明抽象产品的方法。
ConcreteFaCtory为具体工厂,执行生成抽象产品的方法,生成一个具体的产品。
AbstractProduct为抽象产品,为一种产品声明接口。
Product为具体产品,定义具体工厂生成的具体产品的对象,实现产品接口。
    图17—3中的IFactory对应类图中的AbstractFactory,Sqlserverfactory和Accessfactory对应类图中的ConcreteFactory,SqlserverDepartment和AccessDepartment对应类图中的Product,而IDepartment对应类图中的AbstractProduct。
    空(1)和空(2)考查接12]IDepartment中方法的定义。由其子类SqlserverDepartment和AccessDepartment中方法的定义,可知空(1)处应填入void Insert(Department department),空(2)处应填入Department GetDepartment(int id)。
    空(3)和空(4)考查接口IDepartmentl~实现。接口的实现是在一个类的声明中使用关键字“implements”来表示该类使用某个已经定义的接口,然后即可在该类体中使用接口中定义的常量,而且必须实现接口中定义的所有方法。因此,空(3)和空(4)都应填入implements IDepartment。
    由于所给程序中缺少接口IFactory的定义,因此空(5)处应为定义接ElIFactory,应填入interface IFactory。由于类Sqlserverfactory和Accessfactory中必须实现接口Ifactory  定义的所有方法,观察这两个类中的方法可知,空(6)处应填入IDepartment CreateDepartment0。
转载请注明原文地址:https://jikaoti.com/ti/y0i7FFFM
0

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