外观(Facade)模式
:为多个复杂的子系统提供一个一致的接口,从而使这些子系统更容易被访问。
外观(Facade)模式角色:
(1)外观(Facade)角色
:为多个子系统对外提供一个共同的接口。
(2)子系统(Sub System)角色
:客户通过外观角色访问其接口。
张无忌学会了九阳神功,乾坤大挪移、太极拳剑。张无忌就相当于外观角色。而子系统包括三个:火工头陀、阳顶天、张三丰。张无忌为三个子系统提供一致的接口,你想访问那种武功,统一经过外观角色(张无忌)便可。外观角色具有收集癖,收集子系统的接口服务,客户只需和外观角色交互即可。
示例:
// 子系统1:火工头陀
public class HuoGongTouTuo{
// 使出九阳神功
public void showJiuYangShenGong(){
System.out.println("九阳神功");
}
}
// 子系统2:阳顶天
public class YangDingTian{
public void showQianKunDaNuoYi(){
System.out.println("乾坤大挪移");
}
}
// 子系统3:张三丰
public class ZhangSanFeng{
public void showTaiJiQuanJian(){
System.out.println("太极拳剑");
}
}
// 外观角色:张无忌
public class ZhangWuJi{
HuoGongTouTuo hgtt;
YangDingTian ydt;
ZhangSanFeng zsf;
public ZhangWuJi(){
hgtt = new HuoGongTouTuo();
ydt = new YangDingTian();
zsf = new ZhangSanFeng();
}
public void showQianKunDaNuoYi(){
System.out.println("乾坤大挪移");
}
public void showTaiJiQuanJian(){
System.out.println("太极拳剑");
}
public void showJiuYangShenGong(){
System.out.println("九阳神功");
}
}
// 测试
public class Test{
public static void main(String[] args){
ZhangWuJi zwj = new ZhangWuJi();
zwj.showJiuYangShenGong();
zwj.showQianKunDaNuoYi();
zwj.showTaiJiQuanJian();
}
}