比如在玩“极品飞车”这款游戏,你只需要等待的就是倒计时到0时以最快的车速冲到第一名,但游戏者根本没有想过在车冲出去之前要做哪些工作,比如挂档,离合器,油箱检测,调整方向等等的微操作,将这些微操作封装起来变成一个接口就是外观模式了。在WEB开发中的MVC分层架构就是典型的一个外观模式,每一层将操作的具体内容隐藏起来,保留一个接口供上层调用。
【外观模式解释】
类型:结构模式
为子系统中的一组接口提供一个一致的interface接口界面。
【外观模式UML图】
【外观模式-JAVA代码实现】
新建赛车类:
package car_package;
public class car {
public void start() { System.out.println("车子已启动"); }
public void check_stop() { System.out.println("刹车检查"); }
public void check_box() { System.out.println("检查油箱"); }
public void check_console() { System.out.println("检查仪表盘是否异常"); }
} |
新建赛车操作的外观类:
package car_facade;
import car_package.car;
public class car_facade_imple {
public void car_go_go(car car_ref) { car_ref.check_box(); car_ref.check_console(); car_ref.check_stop(); car_ref.start(); } } |
新建客户端运行类:
package run_main;
import car_facade.car_facade_imple; import car_package.car;
public class run_main {
public static void main(String[] args) { car_facade_imple car_facade_imple_ref = new car_facade_imple(); car_facade_imple_ref.car_go_go(new car()); } } |
程序运行结果如下:
很简单吧,将子操作用一个外观接口封装起来,然后调用这个接口就是调用那些非常复杂的微操作了
我们把一个文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。(两个抽屉还好说,但如果是n个呢?)所以对于客户来说,这些取钥匙的过程不需要知道,他们只需要按一个按钮,然后文件就自动取出来。代码例子如下:
public class DrawerOne {
public void open() {
System.out.println("第一个抽屉被打开了");
getKey();
}
public void getKey() {
System.out.println("得到第二个抽屉的钥匙");
}
}
public class DrawerTwo {
public void open() {
System.out.println("第二个抽屉被打开了");
getFile();
}
public void getFile() {
System.out.println("得到这个重要文件");
}
}
//这就是外观类,对客户隐藏了所有具体细节
//client类只需要调用一个open()就完成所有操作
public class DrawerFacade {
DrawerOne darwerOne = new DrawerOne();
DrawerTwo darwerTwo = new DrawerTwo();
public void open() {
darwerOne.open();
darwerTwo.open();
}
}
public class Client {
public static void main(String[] args) {
DrawerFacade drawer = new DrawerFacade();
drawer.open();
}
}
分享到:
相关推荐
用外观模式实现下面这个抵押系统。 考虑这样一个抵押系统,当有一个客户来时,有如下几件事情需要确认: 1到银行子系统查询他是否有足够多的存款, 2到信用子系统查询他是否有良好的信用, 3到贷款子系统查询他有无...
设计模式外观模式PPT学习教案 在软件设计中,外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口来访问子系统中的多个接口,从而简化了子系统的使用和维护。本节课程将详细介绍外观模式的...
某系统需要提供一个文件加密模块,加密流程包括三...现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块。
考虑这样一个抵押系统,当有一个客户来时,有如下几件事情需要确认:到银行子系统查询他是否有足够多的存款,到信用子系统查询他是否有良好的信用,到贷款子系统查询他有无贷款... 未采用外观模式的类结构图见附件。
java设计模式【之】外观模式【源码】【场景:积分兑换图书】 外观模式:对于复杂的类操作, 或者多个子系统互相间需要操作, 可以创建外观类对复杂的类进一步封装, 调用者只与外观类交互。 * 框架应用 * Mybatis...
java的23种常用设计模式之外观模式,经典的例子解析。
C#设计模式-外观模式
大话设计模式之外观模式 经典代码 C#类
外观模式 Facade 设计模式 还请各位大S指教。
实验7 适配器模式、外观模式与模板方法模式---Java设计模式
设计模式--外观模式java例子
外观模式的学习总结
外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为...
设计模式-外观模式(讲解及其实现代码)
装饰、外观模式实例代码
简单的外观模式源代码示例,使用c#编写的。用图形界面。很基本的描述了外观模式。
外观模式的代码(java), 详细描述了外观模式的代码架构.
该资源是学习完设计模式的适配器模式与外观模式根据书中内容所写的demo
Android外观模式实现手机内部功能的简单demo,方便理解.文章链接:http://blog.csdn.net/qq_28690547/article/details/51134427
设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx