外观模式理解和示例

本文介绍外观模式的概念及其应用,通过实例演示如何使用该模式来简化复杂的接口操作,提高代码的可读性和可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、是什么

定义:简化一群类的接口,达到屏蔽代码的复杂度

使用场景: 封装一系列复杂接口,以提供一个服务,简化接口

二、示例

现在模拟在家看漫威,哈哈哈

复杂版:

  1. 打开遥控器
  2. 选择电影栏目
  3. 选择钢铁侠
  4. 打开电影

使用外观模式,将负责封装后就变为:

  1. 打开钢铁侠电影

代码:

/**
 * 遥控器类
 */
public class RemoteControl {

    public void openTV() {
        System.out.println("打开电视");
    }
}

电视类

/**
 * 电视类
 */
public class TV {

    /**
     * 选择电影频道
     */
    public void choiceFilmChannel() {
        System.out.println("选择电影频道");
    }

    /**
     * 选择钢铁侠
     */
    public void choiceIronMan() {
        System.out.println("选择钢铁侠电影");
    }

    /**
     * 打开电影
     */
    public void openFilm() {
        System.out.println("打开电影");
    }
}

测试类:没有用外观模式时,我们需要这几步能看电影

/**
 * 看钢铁侠电影 测试类
 */
public class Test {

    public static void main(String[] args) {

        // ================== 复杂的方式 =========================
        RemoteControl remoteControl = new RemoteControl();
        TV tv = new TV();

        remoteControl.openTV();
        tv.choiceFilmChannel();
        tv.choiceIronMan();
        tv.openFilm();
    }
}

使用外观模式

/**
 * 外观模式下的看电影
 */
public class SeeFilmFacade {

    public void seeFilm() {
        RemoteControl remoteControl = new RemoteControl();
        TV tv = new TV();

        remoteControl.openTV();
        tv.choiceFilmChannel();
        tv.choiceIronMan();
        tv.openFilm();
    }
}

测试类: 使用外观模式

/**
 * 看钢铁侠电影 测试类
 */
public class Test {

    public static void main(String[] args) {
        
        // ================== 外观模式 =========================
        SeeFilmFacade seeFilmFacade = new SeeFilmFacade();
        seeFilmFacade.seeFilm();
    }
}

三、总结

这个模式看似简单,实际也简单

里面有个原则需关注:最少知识原则

要点:

  • 外观模式不是简化接口,也将客户从组件的子系统中解耦
  • 外观模式和适配器都可以包装类,但外观模式的意图是简化接口

 

转载于:https://www.cnblogs.com/milicool/p/11278599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值