一模式定义
外观模式,是软件工程师常用的一种软件设计模式。它为子系统中的一组接口提供一个统一的高层接口,使子系统更容易使用。外观模式通过一个外观接口读/写子系统中的各接口的数据资源,而客户可以通过外观接口读取内部资源库,不与子系统产生交互。
二模式举例
1模式分析
我们借用美食天下菜谱中制作糖醋排骨这一道菜来说明这一模式。
2外观模式静态类图
3代码示例
3.1创建糖醋排骨接口一ISpareribs
package com.demo.common; /** * 糖醋排骨接口 * * @author * */ public interface ISpareribs { // 准备材料 public void prepair(); // 腌制排骨 public void preserve(); // 炸排骨 public void fry(); // 调汁 public void juice(); }
3.2糖醋排骨实现类一Spareribs
package com.demo.common; /** * * 糖醋排骨实现类 * * @author * */ public class Spareribs implements ISpareribs { // 准备材料 @Override public void prepair() { System.out.println("1.准备猪排骨500克,葱末、姜末、酱油、花生油、白糖、醋、料酒、盐各适量..."); } // 腌制排骨 @Override public void preserve() { System.out.println("2.将排骨洗净剁成3厘米长段,用开水汆一下,捞出放盆内,加入盐、酱油腌入味..."); } // 炸排骨 @Override public void fry() { System.out.println("3.炒锅注油烧至六成热,下排骨炸至淡黄色捞出;油温加热至八成,再下锅炸至金黄色捞出..."); } // 调汁 @Override public void juice() { System.out .println("4.炒锅留少许油烧热,下入葱花,姜末爆香,加入适量清水、酱油、醋、白糖、料酒、倒入排骨,烧开后用慢火煨至汤汁浓,排骨熟,淋上熟油,出锅即可!"); } }
3.3创建外观接口一ICookFacade
package com.demo.facade; /** * 外觀模式制作糖醋排骨 * * @author * */ public interface ICookFacade { // 做糖醋排骨 public void cookSpareribs(); }
3.4外观实现一CookFacade
package com.demo.facade; import com.demo.common.ISpareribs; import com.demo.common.Spareribs; /** * 外觀模式制作糖醋排骨 * * @author * */ public class CookFacade implements ICookFacade { // 糖醋排骨排骨接口 private final ISpareribs spareribs = new Spareribs(); // 做糖醋排骨 public void cookSpareribs() { // 准备材料 this.spareribs.prepair(); // 腌制排骨 this.spareribs.preserve(); // 炸排骨 this.spareribs.fry(); // 调汁 this.spareribs.juice(); } }
3.5客户端测试
package com.demo; import com.demo.facade.CookFacade; import com.demo.facade.ICookFacade; /** * 客户端应用程序 * * @author * */ public class Client { public static void main(String[] args) { // 开始做糖醋排骨了! System.out.println("==== 开始做糖醋排骨..."); // // 创建糖醋排骨对象实例 // ISpareribs spareribs = new Spareribs(); // // 准备材料 // spareribs.prepair(); // // 腌制排骨 // spareribs.preserve(); // // 炸排骨 // spareribs.fry(); // // 调汁 // spareribs.juice(); ICookFacade cookFacade = new CookFacade(); cookFacade.cookSpareribs(); System.out.println("==== 糖醋排骨制作完成!"); } }
4运行结果
==== 开始做糖醋排骨...
1.准备猪排骨500克,葱末、姜末、酱油、花生油、白糖、醋、料酒、盐各适量...
2.将排骨洗净剁成3厘米长段,用开水汆一下,捞出放盆内,加入盐、酱油腌入味...
3.炒锅注油烧至六成热,下排骨炸至淡黄色捞出;油温加热至八成,再下锅炸至金黄色捞出...
4.炒锅留少许油烧热,下入葱花,姜末爆香,加入适量清水、酱油、醋、白糖、料酒、倒入排骨,烧开后用慢火煨至汤汁浓,排骨熟,淋上熟油,出锅即可!
==== 糖醋排骨制作完成!
三该模式设计原则
1 迪米特法则——最小知识原则
2 封装变化部分
该图进一步展示了客户端应用程序,外观模式和子系统内部复杂应用三者的关系.
四使用场合
1 一个软件系统的复杂度比较高,需要一个更高级别的简单接口简化对子系统的操作时。
2 当使用端与实现类之间有太多的依赖性,需要降低使用端与子系统或子系统间的耦合性,增加子系统的独立性时。
3当子系统是相互依存的,需要层级化子系统,简化子系统之间的相依性的时候,可以使用外观模式。
五 外观模式静态类图
相关推荐
内含ppt+代码 对于初学android项目的人绝对可以尝试
美食天下网站前端开发案例,全部由本人亲手完成,若有纰漏,欢迎大家指正。谢谢!
移动互联网时代自媒体社群营销模式探究——以美食博主李子柒为例.pdf
打不开,总提示进入安全模式——解决方法(转载).pdf打不开,总提示进入安全模式——解决方法(转载).pdf打不开,总提示进入安全模式——解决方法(转载).pdf打不开,总提示进入安全模式——解决方法(转载).pdf打不开,总...
设计模式——单例模式源码,设计模式——单例模式源码
设计模式——代理模式源码,设计模式——代理模式源码
优点: 1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。 缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。
Android地图搜索应用 实例 提供给需要的人参考学习
设计模式——抽象工厂模式源码,设计模式——抽象工厂模式源码
webgis项目——美食
EJB的经典模式——门面模式EJB的经典模式——门面模式
微信小程序项目实例——今日美食 今日美食是为用户提供各种美食的制作方法,详细介绍了配料和制作流程
Web地图设计模式——ArcGIS Server Web地图设计模式——ArcGIS Server Web地图设计模式——ArcGIS Server
设计模式——刘伟
Matlab模拟我国对外投资模式——基于出口冲击的分析.rar
设计模式 ——策略模式 实验报告 详细代码 设计概要都有
校园共享经济发展新模式——以美妆共享“玩妆记”为例.pdf
《设计模式——基于C#的工程化实践及扩展》相关的源码 ,这是一本讲设计模式的很好的书, 作者有深厚的功底, 从汇编到C++ ,再到C#/Java 等 ,并结合的思想 Martin Fowler的思想 ,对设计模式做了深刻的思考.
“直播 电商”模式——媒体融合下主流媒体的转型契机.pdf
这个是http://blog.csdn.net/dawanganban/article/details/9900539博客中java设计模式的源代码。下载前请先看《设计模式——原型模式》一文。