Java基于外观模式实现美食天下食谱功能实例详解

 更新时间:2018年05月15日 12:06:35   作者:chengqiuming  
这篇文章主要介绍了Java基于外观模式实现美食天下食谱功能,较为详细的讲述了外观模式的概念、原理并结合实例形似详细分析了Java基于外观模式实现美食天下食谱功能的具体操作步骤与相关注意事项,需要的朋友可以参考下

本文实例讲述了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算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • JAVA线程同步实例教程

    JAVA线程同步实例教程

    这篇文章主要介绍了JAVA线程同步实例教程,在Java程序设计中有着非常广泛的应用,需要的朋友可以参考下
    2014-08-08
  • SpringBoot定时任务的实现详解

    SpringBoot定时任务的实现详解

    这篇文章主要介绍了SpringBoot定时任务的实现详解,定时任务是企业级开发中最常见的功能之一,如定时统计订单数、数据库备份、定时发送短信和邮件、定时统计博客访客等,简单的定时任务可以直接通过Spring中的@Scheduled注解来实现,需要的朋友可以参考下
    2024-01-01
  • Java System类两个常用方法代码实例

    Java System类两个常用方法代码实例

    这篇文章主要介绍了Java System类两个常用方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • mybatis如何实现的数据库排序

    mybatis如何实现的数据库排序

    这篇文章主要介绍了mybatis如何实现的数据库排序,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • SpringBoot继承LogStash实现日志收集的方法示例

    SpringBoot继承LogStash实现日志收集的方法示例

    这篇文章主要介绍了SpringBoot继承LogStash实现日志收集的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Java构造器使用方法及注意事项

    Java构造器使用方法及注意事项

    这篇文章主要介绍了Java构造器使用方法及注意事项的相关资料,这里举例说明如何使用构造器及需要注意的地方,需要的朋友可以参考下
    2017-07-07
  • SpringBoot从繁至简的框架基础教程

    SpringBoot从繁至简的框架基础教程

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置
    2022-10-10
  • spring定时器定时任务到时间未执行问题的解决

    spring定时器定时任务到时间未执行问题的解决

    这篇文章主要介绍了spring定时器定时任务到时间未执行问题的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Spring Boot 如何通过ServletRequestHandledEvent事件实现接口请求的性能监控

    Spring Boot 如何通过ServletRequestHandledEvent事件实现接口请求的性能监控

    在Spring框架中,监控接口请求的性能可以通过ServletRequestHandledEvent事件实现,这篇文章给大家介绍Spring Boot 如何通过ServletRequestHandledEvent事件实现接口请求的性能监控,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • 使用BindingResult 自定义错误信息

    使用BindingResult 自定义错误信息

    这篇文章主要介绍了使用BindingResult 自定义错误信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论