欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

外观模式:初探一二

最编程 2024-08-05 21:59:02
...

外观模式,它又称什么模式?
它是什么类型的模式?它的使用场景,你知道吗?


外观模式(facade pattern),又称门面模式,是一种结构型模式,能为程序库、框架、复杂系统提供一个高层面的接口,以供客户端或使用者访问。

优点:减少了系统间的相互依赖,提高了系统灵活性,提供了系统安全性。

缺点:不符合开闭原则。

业务场景:系统内部复杂,客户端无需知道系统的复杂,更不能向客户端开放复杂的接口,向客户端开放简单而统一的一个接口即可。

关键代码:在客户端与系统之间增加一个独立的类。该类与客户端解耦。该类与系统耦合,将调用顺序、依赖关系处理好。

下面看UML类图关系:


代码实现步骤:
步骤1:计算机接口;

/**
 * 1.计算机接口
 * @author 程就人生
 * @Date
 */
public interface IComputer {
  // 启动方法
  public void start();
}

步骤2:计算机接口实现类;

/**
 * 2.1 计算机启动接口实现类--加电操作
 * @author 程就人生
 * @Date
 */
public class AddElectricity implements IComputer {

  @Override
  public void start() {
    System.out.println("第一步:加电");
  }
}
/**
 * 2.2 计算机启动接口实现类--BIOS启动
 * @author 程就人生
 * @Date
 */
public class Bios implements IComputer{

  @Override
  public void start() {
    System.out.println("第二步:BIOS启动,POST自检(Power-On-self-test)");
  }

}
/**
 * 2.3 计算机启动接口实现类--启动顺序
 * @author 程就人生
 * @Date
 */
public class OperOrder implements IComputer {

  @Override
  public void start() {
    System.out.println("第三步:执行启动顺序");
  }

}
/**
 * 2.4 计算机启动接口实现类--主引导记录
 * @author 程就人生
 * @Date
 */
public class MBR implements IComputer {

  @Override
  public void start() {
    System.out.println("第四步:主引导记录(Master Boot Record)");
  }

}
/**
 * 2.5 计算机启动接口实现类--硬盘启动
 * @author 程就人生
 * @Date
 */
public class Harddisk implements IComputer{

  @Override
  public void start() {
    System.out.println("第五步:硬盘启动");
  }

}
/**
 * 2.6 计算机启动接口实现类--操作系统启动
 * @author 程就人生
 * @Date
 */
public class OperSystem implements IComputer {

  @Override
  public void start() {
    System.out.println("第六步:操作系统启动");
  }
}

步骤3:门面装饰类;

/**
 * 3.门面模式-电脑开关按钮
 * @author 程就人生
 * @Date
 */
public class ComputerButton {
  
  private IComputer addElectricity;
  private IComputer bios;
  private IComputer operOrder;
  private IComputer mbr;
  private IComputer harddisk;
  private IComputer operSystem;
  
  public ComputerButton(){
    System.out.println("电脑准备启动了....");
    addElectricity = new AddElectricity();
    bios = new Bios();
    operOrder = new OperOrder();
    mbr = new MBR();
    harddisk = new Harddisk();
    operSystem = new OperSystem();
  }
  

  public void start(){
    // 1. 加电
    addElectricity.start();
    // 2. Bios启动
    bios.start();
    // 3. 执行启动顺序
    operOrder.start();
    // 4.主引导记录
    mbr.start();    
    // 5.硬盘启动
    harddisk.start();
    // 6.操作系统启动
    operSystem.start();
    System.out.println("电脑启动完毕~!");
  }
}

步骤4:测试代码;

// 客户端只需轻轻一按计算机的开关按钮,即可打开电脑开始工作
ComputerButton computerButton = new ComputerButton();
computerButton.start();

测试结果:

电脑准备启动了....
第一步:加电
第二步:BIOS启动,POST自检(Power-On-self-test)
第三步:执行启动顺序
第四步:主引导记录(Master Boot Record)
第五步:硬盘启动
第六步:操作系统启动
电脑启动完毕~!

这段代码的意思是:电脑启动,需要启动很多软件和硬件模块;这些模块很复杂,使用电脑的人不一定了解电脑启动的原理和硬件结构,只需要按下电脑上的启动开关,即可打开电脑。

最后总结

外观模式,在我们的生活中无处不在。比如你去餐厅点餐,你只需要告诉服务员你想要的菜品,服务员则会把做好的菜品送到你的餐桌上。而作为客户的我们,不需要知道厨房有几个厨师,他们是怎么做菜的,他们需要哪些厨具和食材等等这些细节。这就是外观模式,也叫门面模式。

欢迎关注同名公众号~!