设计模式之外观模式

        外观模式定义了一个高层接口。用户只需要调用高层接口,即可间接调用其他子系统完成相应的动作,而不需要关注子系统是如何被调用的。

        比如,当你入手了一辆布加迪威龙(你真的入手了一辆?壕,我们能不能交个朋友?),你会得到两把钥匙,一把是正常点火钥匙,另外一把插入锁孔会解除车速锁定,底盘放低,尾翼收下,带你进入极速世界(真的好想有一辆,10个肾够不够?100个肾能不能买到?)。

        在这个例子中,两个锁孔都可以看做是门面类,第一把钥匙插进去你只需要插进去再转动一下,布加迪威龙会自动点火,你不需要知道点火的时候干了什么,反正就是点火了,你可以开了。当然第二个锁孔更牛,它会自动进入极速模式,底盘降低,尾翼收下,整辆车的200多个参数会重新设置,然后它会带你飞!

首先,我们需要有一辆布加迪威龙:

public class Bugatti {
	public void normal() {
		System.out.println("正常启动。");
	}
	public void launch() {
		System.out.print("点火,");
	}
	public void topSpeed() {
		System.out.println("我要飞的很高!");
	}
	public void adjustUnderpan() {
		System.out.print("底盘降低、");
	}
	public void adjustEmpennage() {
		System.out.print("尾翼收下、");
	}
	public void adjustAllParameters() {
		System.out.print("全部参数调整,");
	}
}
然后我们有了两把钥匙:

public class Keys {
	public void normalKey() {
		System.out.print("第一把钥匙插入:");
	}
	public void topSpeedKey() {
		System.out.print("第二把钥匙插入:");
	}
}
然后我们需要有一个门面类,简单来说就是跟锁孔一起的点火装置:

public class Facade {
	public Keys keys = new Keys();
	public Bugatti bugatti = new Bugatti();
	public void normalMode() {
		keys.normalKey();
		bugatti.launch();
		bugatti.normal();
	}
	public void topSpeedMode() {
		keys.topSpeedKey();
		bugatti.launch();
		bugatti.adjustUnderpan();
		bugatti.adjustEmpennage();
		bugatti.adjustAllParameters();
		bugatti.topSpeed();
	}
}
我们启动布加迪威龙吧!

public class Main {

	public static void main(String[] args) {
		Facade facade = new Facade();
		facade.normalMode();
		facade.topSpeedMode();
	}

}
感受一下:

第一把钥匙插入:点火,正常启动。

第二把钥匙插入:点火,底盘降低、尾翼收下、全部参数调整,我要飞的很高!


        我已经听到发动机嘶吼的咆哮声,真带劲!我们已经假设有了钥匙和车,现在来假设一下我们有很多很多钱!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值