Java设计模式—外观模式(Facade)

外观模式

业务需求
组建家庭影院,包括DVD播放器,投影仪,自动屏幕,环绕立体声,爆米花机;用遥控器完成各个功能;

  • 遥控器
  • 开爆米花机
  • 放下屏幕
  • 开投影仪
  • 开音响
  • 开DVD
  • 拿爆米花
  • 调整灯光
  • 播放
  • 观影结束,关闭设备

传统解决方式
在这里插入图片描述
传统解决方式问题分析

  • 在ClientTest中,创建各个子系统对象并直接调用相关方法,会造成调用过程混乱,没有清晰的过程
  • 不利于在ClientTest中维护子系统的操作
  • 解决思路,定义一个高层接口,给子系统中的一组接口提供一个一致的界面,比如高层接口提供ready/play/pause/end,用来访问子系统中的一群接口
  • 通过定义一个一致性的接口(界面类),用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统内部的细节,外观模式

基本介绍

  • 外观模式,也叫过程模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,
  • 外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节, 使得调用端只需跟这个接口发生调用,而无需关系这个子系统的内部细节

在这里插入图片描述
原理图说明

  • 外观类Facade,为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给适当的子系统对象
  • 调用者Client,外观接口调用者
  • 子系统的集合,指模块或者子系统,处理Facade对象指派的任务,是功能的提供者
  • 外观模式就是解决多个复杂接口带来的使用困难,起到简化用户操作的作用

在这里插入图片描述
代码实现

各个设备功能

public class DVDPlayer {
   
    // 单例模式 饿汉式
    private static DVDPlayer instance = new DVDPlayer();
    public static DVDPlayer getInstance() {
   
        return instance;
    }
    public void on() {
   
        System.out.println("DVD 打开");
    }
    public void off() {
   
        System.out.println("DVD 关闭");
    }
    public void play() {
   
        System.out.println("DVD 播放");
    }
    public void pause() {
   
        System.out.println("DVD 暂停");
    }
}
public class Popcorn {
   
    private static Popcorn instance = new Popcorn();
    public static Popcorn getInstance() {
   
        return instance;
    }
    public void on() {
   
        System.out.println("爆米花机 打开");
    }
    public void off() {
   
        System.out.println("爆米花机 关闭");
    }
    pub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值