Java基于外观模式实现美食天下食谱功能实例详解
作者:chengqiuming 发布时间:2022-08-22 22:59:51
本文实例讲述了Java基于外观模式实现美食天下食谱功能。分享给大家供大家参考,具体如下:
一、模式定义
外观模式,是软件工程师常用的一种软件设计模式。它为子系统中的一组接口提供一个统一的高层接口,使子系统更容易使用。外观模式通过一个外观接口读/写子系统中的各接口的数据资源,而客户可以通过外观接口读取内部资源库,不与子系统产生交互。
二、模式举例
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. 当子系统是相互依存的,需要层级化子系统,简化子系统之间的相依性的时候,可以使用外观模式。
五、外观模式静态类图
希望本文所述对大家java程序设计有所帮助。
来源:https://blog.csdn.net/chengqiuming/article/details/70139355
猜你喜欢
- 目录前言connectTimeout:callTimeout:pingIntervalwriteTimeoutreadTimeout总结前言
- 前言Java8新特性java.time.*包学习。 自从java发布模式变更就发现自己有些跟不上他们的速度,java8还有不少没有用透而9、
- 前言在java Thread类中,我们会看到interrupt()、interrupted()及isInterrupted(),在大多数情况
- 本文实例为大家分享了java使用poi导出图片到Excel的具体代码,供大家参考,具体内容如下代码实现Controller/** * 导出志
- Quartz与Spring集成方式:1.MethodInvokeJobDetailFactoryBean2.JobDetailBean下面分
- 前言回老家,实在太无聊,于是乎给自己整了一套台式机配置,总价 1W+,本以为机器到位后可以打打游戏,学学技术打发无聊的时光。但是我早已不是从
- 本文实例讲述了Java针对ArrayList自定义排序的2种实现方法。分享给大家供大家参考,具体如下:Java中实现对list的自定义排序主
- 目录为了实现用户登录拦截你是否写过如下代码呢?1. 基于Filter2. 基于Struts3. 基于SpringMVC如何使用自定义注解完成
- Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,
- 在处理大文件时,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来
- Spring Boot @RestController重定向redirectSpring MVC项目中页面重定向一般使用return &qu
- 最近发现线上监控有个SQL调用量很大,但是方法的调用量不是很大,查看接口实现,发现接口是做了缓存操作的,使用Spring cache缓存注解
- 在项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。本文将对常用的转换方法进行一个总结。常用的方法有Object.to
- 本文将带领大家实现第一个用eclipse写的第一个Javaweb项目–简单购物车。文章会在问题分析、具体实现和常见问题这三块为大家详细解说。
- 简介Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法
- 代码如下:using System; using System.Collections.Generic; using S
- idea手动刷新git分支相信很多小伙伴都遇到过这样的问题,在git上新建的分支却在idea的git分支中找不到又不知在哪里刷新,博主最近也
- GridView设置如下:<asp:GridView ID="GridViewlb" runat="se
- 一、研究背景在我们实际的项目开发中,我们会经常对文件进行相关任务的操作,具体的开发环节中,免不了让我们获取文件的后缀名,通过后缀名来进行下一
- 本小节内容不多,但是个人感觉比较独立,还是拿出来单讲吧。在开发 IntelliJ Plugin 时,如果需要用到 Gson、OKHttp 等