广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java设计模式之外观模式示例详解
  • 858
分享到

Java设计模式之外观模式示例详解

2024-04-02 19:04:59 858人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录定义案例需求方案:外观模式实现分析总结定义 外观模式为多个复杂的子系统,提供了一个一致的界面,使得调用端只和这个接口发生调用,而无须关系这个子系统内部的细节 案例 需求 看电影的

定义

外观模式为多个复杂的子系统,提供了一个一致的界面,使得调用端只和这个接口发生调用,而无须关系这个子系统内部的细节

案例

需求

看电影的时候需要进行一系列的操作,比如打开播放器,放下屏幕,打开投影仪,打开音响等,这个要怎么进行管理呢

方案:外观模式实现

定义播放器类

public class Player {

    private static Player player = new Player();

    private Player(){}

    public static Player getInstance(){

        return player;
    }

    public void on(){
        System.out.println("打开播放器");
    }

    public void off(){
        System.out.println("关闭播放器");
    }

    public void play(){
        System.out.println("使用播放器播放电影");
    }

    public void pause(){
        System.out.println("暂停播放器");
    }

    public void select(){
        System.out.println("选择喜欢的电影");
    }
}

定义投影仪类

public class Projector {

    private static Projector projector = new Projector();

    private Projector(){}

    public static Projector getInstance(){

        return projector;
    }

    public void on(){
        System.out.println("放下屏幕,打开投影仪");
    }

    public void off(){
        System.out.println("关闭投影仪");
    }

    public void focus(){
        System.out.println("调节投影仪焦距");
    }

    public void zoom(){
        System.out.println("投影仪变焦");
    }

}

定义音响类

public class Stereo {

    private static Stereo stereo = new Stereo();

    private Stereo(){}

    public static Stereo getInstance(){
        return stereo;
    }

    public void on(){
        System.out.println("打开音响");
    }

    public void off(){
        System.out.println("关闭音响");
    }

    public void setVolume(){
        System.out.println("调节音响音量");
    }
}

定义爆米花机类


public class Popcorn {

    private static Popcorn popcorn = new Popcorn();

    private Popcorn(){}

    public static Popcorn getInstance(){
        return popcorn;
    }

    public void on(){
        System.out.println("打开爆米花机");
    }

    public void off(){
        System.out.println("关闭爆米花机");
    }

    public void pop(){
        System.out.println("制作爆米花");
    }
}

定义家庭影院外观类

public class HomeTheaterFacade {

    // 聚合各个子系统
    private Player player;

    private Popcorn popcorn;

    private Projector projector;

    private Stereo stereo;

    public HomeTheaterFacade(){

    }

    // 全参构造器
    public HomeTheaterFacade(Player player, Popcorn popcorn,Projector projector,Stereo stereo){
        this.player = player;
        this.popcorn = popcorn;
        this.projector = projector;
        this.stereo = stereo;
    }

    // 准备阶段
    public void ready(){
        popcorn.on();
        player.on();
        projector.on();
        stereo.on();
    }

    // 播放
    public void play(){
        player.select();
        popcorn.pop();
        projector.focus();
        stereo.setVolume();
    }

    // 结束
    public void end(){
        player.off();
        popcorn.off();
        projector.off();
        stereo.off();
    }
}

定义测试

public class Test {
    public static void main(String[] args) {
        HomeTheaterFacade homeTheaterFacade = new HomeTheaterFacade(Player.getInstance(),Popcorn.getInstance(),Projector.getInstance(),Stereo.getInstance());
        homeTheaterFacade.ready();
        homeTheaterFacade.play();
        homeTheaterFacade.end();
    }
}

查看测试结果

分析

我们通过家庭影院外观类HomeTheaterFacade的ready,play,end方法操作了播放器,投影仪等的打开,关闭,对于家庭影院外观类来说,他是不需要知道播放器,投影仪等的打开,关闭具体是怎么样实现的。在一定程度上实现了解耦,易维护和扩展。

总结

优势:

1.外观模式对外屏蔽了子系统的实现细节(安全性)

2.外观模式降低了客户端与子系统交互的复杂性,对客户端和子系统进行解耦合,子系统内部的模块更容易维护和扩展

3.通过合理的使用外观模式,可以帮助我们更好的划分访问层次

使用场景

1.对分层的系统进行构建时,使用外观模式可以简化子系统之间的依赖关系

2.当有一个复杂的系统,里面有很多子系统,有大量的操作,这时候可以使用外观模式

3.当客户端与多个子系统之间存在很多耦合时,引入外观模式,可以将他们分离,提高子系统的独立性和可移植性

以上就是Java设计模式之外观模式示例详解的详细内容,更多关于Java外观模式的资料请关注编程网其它相关文章!

--结束END--

本文标题: Java设计模式之外观模式示例详解

本文链接: https://www.lsjlt.com/news/141096.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java设计模式之外观模式示例详解
    目录定义案例需求方案:外观模式实现分析总结定义 外观模式为多个复杂的子系统,提供了一个一致的界面,使得调用端只和这个接口发生调用,而无须关系这个子系统内部的细节 案例 需求 看电影的...
    99+
    2022-11-13
  • Java设计模式之java外观模式详解
    目录模式动机模式定义模式结构角色模式分析典型的外观角色代码外观模式实例与解析实例一:电源总开关实例二:文件加密模式优缺点优点缺点模式适用环境源码分析外观模式的典型应用(1) 外观模式...
    99+
    2022-11-12
  • Java设计模式之外观模式
    本文通过老王改造小王公司的整体架构来说明外观模式,所谓的外观模式其实就是在各种复杂的子系统中抽象出来一个接口,隐藏具体的实现细节,调用方调用时只需要调用接口即可。为了加深理解我们会选...
    99+
    2022-11-13
  • Java设计模式中的外观模式详解
    目录模式介绍UML类图外观模式案例:外观模式的注意事项和细节模式介绍 外观模式(Facade) ,也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定...
    99+
    2022-11-13
  • Java设计模式之浅谈外观模式
    目录简介外观模式之理解实例①、定义子系统②、外观类③、测试好文推荐简介 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类...
    99+
    2022-11-13
  • 深入理解Java设计模式之外观模式
    目录一、什么是外观模式二、外观模式的使用场景三、外观模式的优缺点四、外观模式的实现总结一、什么是外观模式 定义:为子系统中的一组接口提供一个一致的界面,用来访问子系统中的一群接口。 ...
    99+
    2022-11-12
  • Java设计模式之单例模式示例详解
    目录0.概述1.饿汉式1.1 饿汉式单例实现1.2 破坏单例的几种情况1.3 预防单例的破坏2.枚举饿汉式2.1 枚举单例实现2.2 破坏单例3.懒汉式4.双检锁懒汉式5.内部类懒汉...
    99+
    2022-11-12
  • Java设计模式之java观察者模式详解
    目录引言介绍角色原理类图微信订阅号的案例总结优点缺点适用场景观察者模式的典型应用JDK 提供的观察者接口Guava EventBus 中的观察者模式Spring Applicatio...
    99+
    2022-11-12
  • Java设计模式之享元模式示例详解
    目录定义原理类图案例需求方案:享元模式分析总结定义 享元模式(FlyWeight Pattern),也叫蝇量模式,运用共享技术,有效的支持大量细粒度的对象,享元模式就是池技术的重要实...
    99+
    2022-11-13
  • Java设计模式之策略模式示例详解
    目录定义结构UML类图UML序列图深入理解策略模式策略和上下文的关系策略模式在JDK中的应用该策略接口有四个实现类策略模式的优点策略模式的缺点策略模式的本质在讲策略模式之前,我们先看...
    99+
    2022-11-13
  • Java设计模式探究之观察者模式详解
    目录1.观察者模式是什么2.如何实现3.代码实现1)观察者接口2)被观察者接口3)观察者实现4)被观察者实现5)测试类4.延伸拓展1.观察者模式是什么 顾名思义,有两个对象,观察者和...
    99+
    2022-11-13
  • Java设计模式之组合模式的示例详解
    目录定义原理类图案例需求方案分析总结定义 组合模式,又叫部分整体模式,它创建了对象组的数据结构(将对象组合成树状结构,用来表示部分整体的层级关系)组合模式使得用户对单个对象和组合对象...
    99+
    2022-11-13
  • Java设计模式之原型模式的示例详解
    目录定义案例需求方案一方案二对比分析总结 定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 即实现了一个原型接口,该接口用于创建当前对象的克隆,当直接创建对象的代...
    99+
    2022-11-13
  • Java设计模式之桥接模式的示例详解
    目录定义案例需求方案一方案二对比分析总结定义 桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是&ldquo...
    99+
    2022-11-13
  • JAVA设计模式之单例模式详解
    目录前言一、单例模式是什么?二、懒汉式单例三、饿汉式单例四、双重校验锁总结前言 在之前的文章里已经介绍了设计模式以及设计原则的概念,接下来我们从单例模式入手深入学习几种常用的JAVA...
    99+
    2022-11-13
  • Java设计模式之建造者模式的示例详解
    目录定义案例需求方案一方案二对比分析总结建造者模式的优势:注意点 定义 建造者模式(Builder Pattern),又叫生成器模式,是一种对象构建模式 它可以将复杂对象的建造过程抽...
    99+
    2022-11-13
  • Java设计模式之适配器模式的示例详解
    目录定义分类案例需求方案一:类适配器方案二:对象适配器方案三:接口适配器对比分析方案一:类适配器方案二:对象适配器方案三:接口适配器总结 定义 适配器模式,即将某个类的接口转换成客户...
    99+
    2022-11-13
  • Java设计模式之责任链模式的示例详解
    目录应用场景实际代码案例无模式情况下的代码采用责任链模式优化代码采用建造者+责任链模式优化代码责任链模式优缺点责任链模式是将链中的每一个节点看做是一个对象,每个节点处理的请求均不相同...
    99+
    2022-11-13
    Java 设计模式 责任链模式 Java 责任链模式
  • Java设计模式之观察者模式
    目录一、观察者模式的定义和特点二、观察者模式的结构三、代码实例代码示例总结 一、观察者模式的定义和特点 观察者模式的定义: 指多个对象间存在一对多的依赖关系,当一个对象的状态发生改...
    99+
    2022-11-12
  • Golang设计模式之外观模式的实现
    目录1. 模拟场景2. 代码实现2.1 Hero2.2 LiXin2.3 LiBai2.4 main3. 含义1. 模拟场景 实现需求为玩家拥有多个英雄,在部署好英雄之后,只用点击进...
    99+
    2023-05-20
    Go外观模式 Go设计模式外观模式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作