外观模式
指外部与一个子系统的通信必须通过一个统一的外观对象进行
uml
Façade:外观角色,是模式的核心,他被客户client角色调用,知道各个子系统的功能。同时根据客户角色已有的需求预订了几种功能组合\
Subsystem classes:子系统角色,实现子系统的功能,并处理由Facade对象指派的任务。对子系统而言,facade和client角色是未知的,没有Facade的任何相关信息;即没有指向Facade的实例。
Client:客户角色,调用facade角色获得完成相应的功能。
案例
请基于Java通过外观模式实现在文件柜中寻找文件的管理。文件放在文件柜的第二个抽屉里,但是它的钥匙必须从第一个抽屉里获得。
package 外观模式;
public class DrawerOne {
public void open(){
System.out.println("打开第一个抽屉");
getkey();
}
public void getkey() {
System.out.println("得到第二个抽屉的钥匙");
}
}
package 外观模式;
public class DrawerTwo {
public void open(){
System.out.println("打开第二个从抽屉");
getFile();
}
public void getFile(){
System.out.println("得到文件");
}
}
package 外观模式;
public class DrawerFacade {
DrawerOne darwerOne=new DrawerOne();
DrawerTwo darwerTwo=new DrawerTwo();
public void open(){
darwerOne.open();
darwerTwo.open();
}
}
package 外观模式;
public class DrawerClient {
public static void main(String []args){
DrawerFacade drawer=new DrawerFacade();
drawer.open();
}
}
运行截图: