外观模式 JAVA实现
来源:互联网 发布:js doctype 编辑:程序博客网 时间:2024/04/30 00:44
基本概念
外观模式(Façade Pattern):他为子系统中的一组接口提供一个统一的高层接口。使子系
统更容易使用。外观模式通过一个外观接口读/写子系统接口
的数据资源,而客户可以通过外观接口读取内部资源库,不与子系统产生交互。
概念解析:当我们写的程序里有很多方法,而这些方法的执行又要按一定的顺序执行,如
果我们每次调用的时候都按一定的顺序调用,我们必须记清顺序,这样来就很
麻烦,每次调用要写的代码量也很大。这时我们引入外观模式,把调用的代码
封装到一个类里面,这个类提供一个接口供我们调用,我们只需要调用这个接
口,就可以实现程序调用。
模式类图:
外观模式静态类图
使用场合:(1)、一个软件的复杂度比较高,需要一个更高级别的简单接口简化对子系统的操作时。
(2)、当使用端与实现类之间有太多的相依性,需要降低使用端与子系统或子系统间的耦合性,增加子系统的独立性。
(3)、当子系统是相互依存的,需要层级化子系统,简化子系统之间相依性的时候,可以使用外观模式。
实例分析:制作糖醋排骨
假设制作过程可以分为以下四步:(这四步必选按顺序执行)
1、 第一步。。。。。。
2、 第二步。。。。。。
3、 第三步。。。。。。
4、 第四步。。。。。。
先定义一个制作糖醋排骨的接口,然后在具体实现接口里的方法。接着在定义一个外观接口
来,在接口里面写一个制作他不敢粗排骨的方法,然后实现该接口。接就可以测试啦。下面
是具体的代码。
//创建糖醋排骨接口public interface ISpareribs {public void prepair();//准备材料public void presever();//腌制排骨public void fry();//炸排骨public void juice();//调汁}
//实现 ISpareribs里的具体方法public class Spareribs implements ISpareribs {public void prepair(){System.out.println("第一步。。。。。");}public void presever(){System.out.println("第二部。。。。。");}public void fry(){System.out.println("第三部。。。。。。");}public void juice(){System.out.println("第四部。。。。。。");}}
//创建外观接口public interface ICookFacade {public void cookSpareribs();//制作糖醋排骨的方法}
//实现外观 制作糖醋排骨的具体步骤public class CookFacade implements ICookFacade {private final ISpareribs spareribs=new Spareribs();public void cookSpareribs(){this.spareribs.prepair();this.spareribs.presever();this.spareribs.fry();this.spareribs.juice();}}
//测试程序public class Client {public static void main(String args[]){ICookFacade cookFacade=new CookFacade();cookFacade.cookSpareribs();System.out.println("制作完成!");}}
内容来源软件秘笈--设计模式那点事郑阿奇 主编
- 外观模式 JAVA实现
- java 外观模式实现
- 外观模式(java实现)
- java 实现外观(Facade)模式
- Java实现设计模式之外观模式
- php,java实现门面(外观)模式
- java语言实现结构型设计模式—外观模式
- 《大话设计模式》java实现之外观模式
- 外观模式c++实现
- 外观模式lua实现
- 外观模式----C++实现
- 外观模式 C++实现
- 外观模式C++实现
- 外观模式C++实现
- 论Java外观模式
- java外观模式
- Java外观模式(Facade)
- Java外观模式补充
- 状态压缩DP POJ 2411 Mondriaan's Dream
- 八数码问题高效算法(人工智能实验)
- OCP-1Z0-051-V9.02-127题
- C++友元函数的使用学习笔记
- ecmall发布商品全流程sql语句
- 外观模式 JAVA实现
- Ruby sqlite3的编码兼容性问题
- linux kernel 2.4 和 2.6 的区别
- Android的App Widget实现
- For some errors in install ubuntu on nexus based on wiki
- OCP-1Z0-051-V9.02-128题
- android环境搭建、版本获得、svn使用要点
- N的阶乘解法(C语言简单的代码)
- Java中的Object的Wait() 和notify()方法使用时应注意的地方和Thread中的sleep()方法