外观模式

外观(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();
	}
}

你可能感兴趣的:(Java,设计模式)