列表

详情


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

图6-1 类图

【Java代码】
import javA.util.*;
class Department{/*代码省略*/}
 
interface IDepartment{
    (1)    ;
    (2)    ;
}
 
class SqlserverDepartment (3) {
    public void  Insert(Department department){
       System.out.println(”Insert a record into Department in SQL Server!");
       ∥其余代码省略
    }
    public Department GetDepartment(int id){
  /*代码省略*/
    }
}
 
classAccessDepartment(4) {
    public void Insert(Department department){
   System.out.println("Insert a record into Department in ACCESS!”);
   ∥其余代码省略
    }
    public Department GetDepartment(int id){
       /*代码省略*/
    }
}
(5)  {
    (6)   ;
}
 
class SqlServerFactory implements IFactory{
    public IDepartment CreateDepartment(){
  retum new SqlserverDepartment();
    }
    ∥其余代码省略
}
class AccessFactory implements IFactory{
    public IDepartment CreateDepartment(){
  return new AccessDepartment();
    }
    ∥其余代码省略
}

参考答案:

(1)  void Insert(Department department)
(2)  Department GetDepartment(int id)
(3)  implements lDepartment
(4)  implements IDepartment
(5)  interface IFactory
(6)  IDepartment CreateDepartment()
 

详细解析:

本题考查基本面向对象设计模式的运用能力。
抽象工厂设计模式主要是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。从题目给出的类图可知SqlserverDepartment和AccessDepartment继承于接口Idepartment。而从第(1)和第(2)空处的程序语句可以知道,这里是定义抽象函数,但在这里需要定义一个什么样的抽象函数,就需要根据SqlserverDepartment和AccessDepartment类的内容来了解。在这两个类里面都有Insert和GetDepartment这两个函数,因此在Idepartment中定义的抽象函数就是这两个函数,因此第(1)空应该填 void Insert(Departmet department),而第(2)空应该填Department GetDepartment(int id)。
第(3)空和第(4)空是一样的,因为类SqlserverDepartment和AccessDepartment都是实现接口Idepartment,而实现接口都是用关键字implements,所以这两空的答案都是implements Idepartment。
从第(5)空出现的位置,不难知道这里是定义一个接口,结合前后程序,可以知道这里定义的接口是Ifactory,因此该空的答案为interface Ifactory。
第(6)空是定义接口Ifactory的抽象函数,从后面的程序可以看出,需要定义的抽象函数是CreateDepartment,因此第(6)空的答案是Idcpartment CreateDepartment()。

上一题