试题五(共15分)
阅读下列说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
Facade(外观)模式是一种通过为多个复杂子系统提供一个一致的接口,而使这些子 系统更加容易被访问的模式,以医院为例,就医时患者需要与医院不同的职能部门交互,完 成挂号、门诊、取药等操作。为简化就医流程,设置了一个接待员的职位,代患者完成上述 就医步骤,患者则只需与接待员交互即可。如图5-1给出了以外观模式实现该场景的类图。
代码如下:
import java.util.*; interface Patient { public String getName();//(1) } interface Disposer { public void dispose(Patient patient);//(2) } class Registry implements Disposer { // 挂号 public void dispose(Patient patient) { System.out.println("I am registering..." + patient.getName()); } } class Doctor implements Disposer { // 医生门诊 public void dispose(Patient patient) { System.out.println("I am diagnosing..." + patient.getName()); } } class Pharmacy implements Disposer { // 取药 public void dispose(Patient patient) { System.out.println("I am giving medicine... " + patient.getName()); } } class Facade { private Patient patient; public Facade(Patient patient) { this.patient = patient; } void dispose() { Registry registry = new Registry(); Doctor doctor = new Doctor(); Pharmacy pharmacy = new Pharmacy(); registry.dispose(patient); doctor.dispose(patient); pharmacy.dispose(patient); } } class ConcretePatient implements Patient { private String name; public ConcretePatient(String name) { this.name = name; } public String getName() { return name; } } public class FacadeTest { public static void main(String[] args) { Patient patient =new ConcretePatient("小熊");//(3) Facade f =new Facade(patient); //(4)(5) f.dispose();//(6) } }
运行结果如下: