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


猜你喜欢
- 目录一.数组的基本概念二.数组的声明三.数组的创建及初始化1.数组的创建2.数组的初始化四.访问数组元素五.for each 循环六.数组的
- 一、项目要求实现一个通讯录通讯录可以用来存储100个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:添加联系人信息删除指定
- 一、前言本文主要是从官方文档中筛选出一些常见的适配项,若有任何纰漏或需要补充的,欢迎大家在评论区指出。二、版本适配1. 限制 HTTP 网络
- 需求是需要在TextView前端加入一个标签展示。最终效果图如下:根据效果图,很容易就能想到使用SpannableStringBuilder
- //去title requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏状态栏 getWin
- 前面讲完了Redis的分布式锁的实现,接下来讲Redisson的分布式锁的实现,一般提及到Redis的分布式锁我们更多的使用的是Rediss
- 非Web程序 1.AppDomain.CurrentDomain.BaseDirectory 2.Environment.CurrentDi
- 最近有学生做毕业设计,想使用悬浮窗这种效果,其实很简单,我们可以通过系统服务WindowManager来实现此功能,本章我们来试验一下在当前
- Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。开发Java We
- 一、面向对象的4个基本特征抽象性、封装性、继承性和多态性。抽象性分为过程抽象和数据抽象。封装性封装将数据以及加在这些数据上的操作组织在一起,
- using System;using System.Collections.Generic;using System.ComponentMo
- 先看下效果:两种需求场景:1.广告页3s后跳转到首页2.短信验证码60s倒计时第一种的话,根据需求我们可以知道,我们想要的效果就是3s结束做
- 一、流程图二、Token1、token是一种客户端认证机制,是一个经过加密的字符串,安全性强,支持跨域2、用户第一次登录,服务器通过数据库校
- 在 Android 的一些界面中,有时候我们需要为一副图片生成大小为 n * n 的缩略图,有时候需要的缩略图特殊一些,比如:1、带圆角的缩
- Android 7.0调用相机崩溃解决办法 错误提示:android.os.FileUriExposedException: fi
- 本文实例讲述了Java简单实现调用命令行并获取执行结果。分享给大家供大家参考,具体如下:import java.io.BufferedRea
- ==,equals()与hashcode()"=="在讲解之前,我们是怎么接触到==的,我们在作比较时经常用到 ==,
- Thread dumps(线程转储)能帮助我们判断 CPU 峰值、死锁、内存异常、应用反应迟钝、响应时间变长和其他系统问题。一些在线的分析工
- 本文实例为大家分享了java利用数组随机抽取幸运观众的具体代码,供大家参考,具体内容如下思想:首先将所有观众姓名生成数组,然后获取数组元素的
- SLF4J是一个日志框架抽象层,底下绑定具体的日志框架,比如说Log4J,Logback,Java Logging API等。SLF4J也有