一、概述
外观模式:提供了一个统一的接口,用来访问系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用
二、情景
当一个患者去医院看病时,需要经历挂号,缴费,取药,由于各个部门位于不同的位置,患者无法快速找到对应位置,因此,为了方便,需要一个引导者来帮助患者处理者一系列问题。
三、代码
1.部门接口
public interface Work {
void doWork(Man man);
}
2.挂号部门
public class RegDep implements Work{
@Override
public void doWork(Man man) {
System.out.println("挂号部门给"+man.getName()+"挂号");
}
}
3.缴费部门
public class PayDep implements Work {
@Override
public void doWork(Man man) {
System.out.println("正在给"+man.getName()+"缴费");
}
}
4.取药部门
public class DrugDep implements Work {
@Override
public void doWork(Man man) {
System.out.println("正在给"+man.getName()+"拿药");
}
}
5.外观者类
public class Facade {
private Man man;
public Facade(Man man){
this.man = man;
}
public void work(){
RegDep regDep = new RegDep();
regDep.doWork(man);
PayDep pay = new PayDep();
pay.doWork(man);
DrugDep drug = new DrugDep();
drug.doWork(man);
}
}
6.患者类
public class Man {
private String name;
public Man(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
7.测试类
public class Test {
public static void main(String[] args) {
new Facade(new Man("小李")).work();;
}
}