概念
使用外观模式,可以为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易。
代码
类一
public class SunWukong {
public void pickUpWeapon(){
System.out.println("孙悟空拿起了金箍棒");
}
public void dropWeapon() {
System.out.println("孙悟空扔掉了金箍棒");
}
}
类二
public class ZhuBajie {
public void stop(){
System.out.println("猪八戒尝试阻止大师兄");
}
public void complain(){
System.out.println("猪八戒开始埋怨");
}
}
类三
public class TangSeng {
public void scared(){
System.out.println("唐僧被吓到了");
}
public void chant(){
System.out.println("唐僧念起来紧箍咒");
}
}
外观类
public class Facade {
ZhuBajie zhuBajie;
SunWukong sunWukong;
TangSeng tangSeng;
public Facade() {
zhuBajie = new ZhuBajie();
sunWukong = new SunWukong();
tangSeng = new TangSeng();
}
public void monsterBoneComing(){
System.out.println("白骨精来了");
sunWukong.pickUpWeapon();
zhuBajie.stop();
tangSeng.scared();
}
public void monsterBoneKilled(){
System.out.println("白骨精");
sunWukong.dropWeapon();
zhuBajie.complain();
tangSeng.scared();
}
}
客户端
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.monsterBoneComing();
facade.monsterBoneKilled();
}
}
// 白骨精来了
// 孙悟空拿起了金箍棒
// 猪八戒尝试阻止大师兄
// 唐僧被吓到了
// 白骨精
// 孙悟空扔掉了金箍棒
// 猪八戒开始埋怨
// 唐僧被吓到了
特点
使用设计模式,可能会产生一系列小的类,逐个调用可能会很麻烦,使用外观模式可以一起调用这些类的方法。或者在层与层之间创建外观,提供一个简单的接口,降低耦合度。维护一个旧的系统时,也可以使用外观模式,使用外观模式维护旧系统的所有接口,新的系统只负责与外观模式暴露的接口对接,降低新旧系统的关联性。