一文带你学会“外观模式”,不会你找我

基本介绍

外观模式也叫做“过程模式”,该模式的核心思想是为不同子系统(类)中的一组接口提供一个一致的界面(类)。也就是定义一个高层次的类,该类封装了一些低层次的类和其方法,客户端使用时就用该类。

通过外观模式可以屏蔽子系统中的细节,促使调用端只需要跟高层次的类发生关系即可,无需再关注子系统的内部实现细节。

外观模式还从一定程度上简化了用户的操作,降低了使用的复杂度。

外观模式UML类图

在这里插入图片描述

角色以及职责讲解:

1、FacadeClass(外观类):给客户端提供统一的接口,外观类知道当前的请求由哪些子系统负责。从而可以做到将客户端的请求代理给适当的子系统进行处理。
2、Subsystem1-4(子系统):功能的实际提供者,用于处理外观类指派来的任务。
3、Client(客户端):外观类的调用者。

案例讲解

通过以上的类图和描述大家是否对外观模式有了一定的认识?下面让我们通过一个小案例来体会一下外观模式的魅力。

案例:到吃饭的时间了小菜鸟想吃西红柿鸡蛋面,现在有两个选择,可以选择自己买好原材料,自己做饭,也可以选择下馆子(饭店)。作为一个聪明的菜鸟,我当然是选择下馆子嘛,有现成的为什么要自己造轮子那?这里的饭店就相当外观类,下面让我们用代码实现以下。

子系统相关类

/**
 * 采购员 => 对应子系统角色
 */
public class Buyer {

  // 使用单例模式(懒汉式)
  private final static Buyer INSTANCE = new Buyer();

  public static Buyer getInstance(){
    return INSTANCE;
  }

  private Buyer() {
  }

  protected void egg() {
    System.out.println("采购员:买了两个鸡蛋!");
  }

  protected void tomatoes() {
    System.out.println("采购员:买了一个西红柿!");
  }

  protected void noodle() {
    System.out.println("采购员:买了一斤面条!");
  }

}

/**
 * 厨师 => 对应子系统角色
 */
public class Chef {

  // 使用单例模式(懒汉式)
  private final static Chef INSTANCE = new Chef();

  public static Chef getInstance() {
    return INSTANCE;
  }

  private Chef() {
  }

  public void cook() {
    System.out.println("厨师:制作好西红柿鸡蛋面!");
  }
}

/**
 * 服务员 => 对应子系统角色
 */
public class Waiter {

  // 使用单例模式(懒汉式)
  private final static Waiter INSTANCE = new Waiter();

  public static Waiter getInstance() {
    return INSTANCE;
  }

  private Waiter() {
  }

  public void deliver() {
    System.out.println("服务员:端上了菜!");
  }
}

外观类

/**
 * 餐厅 => 对应外观类角色
 */
public class RestaurantFacade {

  // 定义子系统对象
  private Buyer buyer;
  private Chef chef;
  private Waiter waiter;

  // 构造方法
  public RestaurantFacade() {
    this.buyer = Buyer.getInstance();
    this.chef = Chef.getInstance();
    this.waiter = Waiter.getInstance();
  }

  // 顾客点面条
  public void orderNoodles() {
    this.buyer.egg();
    this.buyer.tomatoes();
    this.buyer.noodle();
    this.chef.cook();
    this.waiter.deliver();
  }

}

客户端测试类

public class Client {

  public static void main(String[] args) {
    RestaurantFacade restaurantFacade = new RestaurantFacade();
    restaurantFacade.orderNoodles();
  }
}

测试结果

在这里插入图片描述

总结

1、外观模式对外屏蔽了子系统的实现细节,从而降低了客户端对子系统使用的复杂度。

2、使用外观模式可以降低客户端与子系统的耦合性,使得子系统内部更容易维护和扩展。

3、当系统需要分层设计时,可以使用外观模式,并且通过合理的使用外观模式,可以帮我们更好的划分系统的访问层次。

4、不能过多的或者不合理的使用外观模式。具体是使用外观模式好,还是直接调用模块好,要以让系统有层次,利于维护为目的。

今天的分享就到这里了,如果感觉“菜鸟”写的文章还不错,记得点赞加关注呦!你们的支持就是我坚持下去的动力。文章哪里写的有问题的也希望大家可以指出,我会虚心受教。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Eclipse是一个开放源代码的集成开发环境(IDE),可用于Java开发,但也可以用于其他编程语言的开发。在本文中,我将向你展示如何使用Eclipse进行Java开发。 1. 下载Eclipse 首先,你需要从Eclipse官方网站下载Eclipse IDE。下载页面上将提供几个不同的版本,包括Eclipse IDE for Java Developers、Eclipse IDE for JavaScript and Web Developers,以及Eclipse IDE for C/C++ Developers等。选择适合你的版本,然后按照安装向导进行安装。 2. 创建Java项目 一旦你安装了Eclipse,你可以启动它并创建一个新的Java项目。选择“File”->“New”->“Java Project”,然后按照向导创建一个新的Java项目。在创建项目时,你需要指定项目名称、项目型以及JRE版本等信息。 3. 创建Java 一旦你创建了一个Java项目,你就可以创建一个Java。选择你的Java项目,在“src”文件夹上右键单击,然后选择“New”->“Class”。输入名和选择要继承的(如果有的话),然后点击“Finish”。 4. 编写Java代码 现在你已经创建了一个Java,可以开始编写Java代码了。在Eclipse的编辑器中,你可以输入Java代码并保存它。当你保存Java文件时,Eclipse会自动编译你的代码,并在Problems视图中显示任何编译错误。 5. 运行Java程序 一旦你编写了Java代码并保存了它,你可以运行Java程序。右键单击Java文件,然后选择“Run As”->“Java Application”。如果一切顺利,你的Java程序将在控制台中输出结果。 6. 调试Java程序 如果你的Java程序出现了错误或不按预期运行,你可以使用Eclipse的调试器来调试它。在Eclipse的编辑器中,你可以设置断点并启动调试器。当程序执行到断点时,调试器会暂停程序并允许你检查变量、运行代码等。 7. 导入外部JAR包 有时,你可能需要使用外部JAR包来完成你的Java项目。在Eclipse中,你可以简单地将外部JAR包导入到你的项目中。右键单击Java项目,然后选择“Build Path”->“Configure Build Path”。在“Libraries”选项卡上,你可以添加外部JAR包。 总结 在本文中,我们介绍了如何使用Eclipse进行Java开发。我们学习了如何创建Java项目、创建Java、编写Java代码、运行Java程序、调试Java程序以及导入外部JAR包。Eclipse具有强大的功能,可以大大提高Java开发的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值