第十二章 外观模式

这篇具有很好参考价值的文章主要介绍了第十二章 外观模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



前言

第十二章 外观模式

第十二章 外观模式
第十二章 外观模式


`

一、外观模式基本介绍

第十二章 外观模式

第十二章 外观模式
第十二章 外观模式
第十二章 外观模式
第十二章 外观模式
第十二章 外观模式
第十二章 外观模式

完整代码

DVD类

package tanchishell.SJMS.facade;

//DVD类
public class DVDPlayer {
    //使用单例模式, 使用饿汉式
    private static DVDPlayer instance = new DVDPlayer();

    public static DVDPlayer getInstanc() {
        return instance;
    }

    //打开DVD
    public void on() {
        System.out.println(" 打开DVD ");
    }

    //关闭DVD
    public void off() {
        System.out.println("  关闭DVD ");
    }

    //播放DVD
    public void play() {
        System.out.println(" 播放DVD ");
    }

    //暂停DVD
    public void pause() {
        System.out.println(" 暂停DVD ..");
    }
}

爆米花类

package tanchishell.SJMS.facade;

//爆米花机
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(" 关闭爆米花机 ");
    }
    //爆米花机正在工作
    public void pop() {
        System.out.println(" 爆米花机正在工作 ");
    }
}

投影仪类

package tanchishell.SJMS.facade;

//投影仪
public class Projector {
    private static Projector instance = new Projector();
    public static Projector getInstance() {
        return instance;
    }

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

    }

    //投影仪正在工作
    public void focus() {
        System.out.println(" 投影仪正在工作 ");
    }
}

屏幕类

package tanchishell.SJMS.facade;


//屏幕类
public class Screen {

    private static Screen instance = new Screen();
    public static Screen getInstance() {
        return instance;
    }

    //升起屏幕
    public void up() {
        System.out.println(" 升起屏幕 ");
    }

    //下降屏幕
    public void down() {
        System.out.println(" 下降屏幕 ");
    }
}

立体声类

package tanchishell.SJMS.facade;


//立体声
public class Stereo {
    private static Stereo instance = new Stereo();
    public static Stereo getInstance() {
        return instance;
    }

    //打开立体声
    public void on() {
        System.out.println(" 打开立体声 ");
    }

    //关闭立体声
    public void off() {
        System.out.println(" 关闭立体声 ");
    }

}

灯光类

package tanchishell.SJMS.facade;

//灯光类
public class TheaterLight {

    private static TheaterLight instance = new TheaterLight();
    public static TheaterLight getInstance() {
        return instance;
    }
    //打开灯光
    public void on() {
        System.out.println(" 打开灯光 ");
    }

    //关闭灯光
    public void off() {
        System.out.println(" 关闭灯光 ");
    }

    //调暗灯光
    public void dim() {
        System.out.println(" 调暗灯光.. ");
    }

    //调亮灯光
    public void bright() {
        System.out.println(" 调亮灯光.. ");
    }
}

家庭影院类进行聚合

package tanchishell.SJMS.facade;


//家庭影院类进行聚合
public class HomeTheaterFacade {
    //定义各个子系统对象
    private TheaterLight theaterLight;
    private Popcorn popcorn;
    private Stereo stereo;
    private Projector projector;
    private Screen screen;
    private DVDPlayer dVDPlayer;

    //构造器获取子系统单例对象
    public HomeTheaterFacade() {
        super();
        this.theaterLight = TheaterLight.getInstance();
        this.popcorn = Popcorn.getInstance();
        this.stereo = Stereo.getInstance();
        this.projector = Projector.getInstance();
        this.screen = Screen.getInstance();
        this.dVDPlayer = DVDPlayer.getInstanc();
    }

    /**操作分成 4 步  准备 开始  暂停  结束
     *
     */

    //准备
    public void ready() {
        //打开爆米花机
        popcorn.on();
        //爆米花机正在工作
        popcorn.pop();
        //下降屏幕
        screen.down();
        //打开投影仪
        projector.on();
        //打开立体声
        stereo.on();
        //打开DVD
        dVDPlayer.on();
        //调暗灯光
        theaterLight.dim();
    }


    //开始
    public void play() {
        //播放DVD
        dVDPlayer.play();
    }

    //暂停
    public void pause() {
        //暂停DVD
        dVDPlayer.pause();
    }


    //结束
    public void end() {
        //关闭爆米花机
        popcorn.off();
        //调亮灯光
        theaterLight.bright();
        //升起屏幕
        screen.up();
        //关闭投影仪
        projector.off();
        //关闭立体声
        stereo.off();
        //关闭DVD
        dVDPlayer.off();
    }
}

Client测试类

public class Client {
    public static void main(String[] args) {
// TODO Auto-generated method stub
//这里直接调用。。 很麻烦
        HomeTheaterFacade homeTheaterFacade = new HomeTheaterFacade();
        homeTheaterFacade.ready();
        System.out.println("-------------------------");

        homeTheaterFacade.play();
        System.out.println("-------------------------");

        homeTheaterFacade.pause();
        System.out.println("-------------------------");
        homeTheaterFacade.end();

    }
}


输出

 打开爆米花机 
 爆米花机正在工作 
 下降屏幕 
 打开投影仪 
 打开立体声 
 打开DVD 
 调暗灯光.. 
-------------------------
 播放DVD 
-------------------------
 暂停DVD ..
-------------------------
 关闭爆米花机 
 调亮灯光.. 
 升起屏幕 
 关闭投影仪 
 关闭立体声 
  关闭DVD 

二、 外观模式在MyBatis框架应用的源码分析

第十二章 外观模式
第十二章 外观模式

三、外观模式的注意事项和细节

第十二章 外观模式文章来源地址https://www.toymoban.com/news/detail-424292.html

到了这里,关于第十二章 外观模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第十二章:泛型(Generic)

    目录 12.1:为什么要有泛型? 12.2:在集合中使用泛型 12.3:自定义泛型结构 12.4:泛型在继承上的体现 12.5:通配符的使用 12.1:为什么要有泛型?         泛型:(标签)允许在定义类、接口时候通过一个标识来表示类中某个属性的类型或者是某个方法的返回值及参数类

    2024年02月07日
    浏览(40)
  • 第十二章 elk

    1、ELK可以帮助我们解决哪些问题 日志分布在多台不同的服务器上,业务一旦出现故障,需要一台台查看日志 单个日志文件巨大,无法使用常用的文本工具分析,检索困难; 2、架构设计分析 Filebeat和Logstash ELK架构中使用 Logstash收集、解析日志 ,但是Logstash对 内存、cpu、io等资

    2024年02月13日
    浏览(33)
  • 第十二章 kafka

    Producer :Producer即生产者,消息的产生者,是 消息的入口 。 kafka cluster :          Broker :Broker是 kafka实例 ,每个服务器上有一个或多个kafka的实例,我们姑且认为每个broker对应一台服务器。每个kafka集群内的broker都有一个不重复的编号,如图中的broker-0、broker-1等…… 主

    2024年02月13日
    浏览(42)
  • 第十二章 sys模块

    什么是Python 解释器 当编写Python 代码时,通常都会得到一个包含Python 代码的以.py 为扩展名的文件。要运行编写的代码,就需要使用Python 解释器去执行.py 文件。因此,Python 解释器就是用来执行Python 代码的一种工具。常见的Python 解释器有以下几种: CPython:Python 的官方解释器

    2024年02月09日
    浏览(41)
  • 第十二章Session

    注意:前面的Cookie是保存在客户端,而session是在服务端的 这里Session与cookie的样式基本一样的 下面加一个base标签 再次点击,id不变,isNew变为false 30分钟 下面这个设置可以改变session的默认时长 下面我们设置session的时长(上面是默认时长) 本来第二次点击session的创建和获取

    2024年01月24日
    浏览(39)
  • 【OpenCV】第十二章: 图像轮廓

    第十二章: 图像轮廓 图像边缘和图像轮廓的区别 前面我们在图像形态学操作里,用cv2.morphologyEx()这个函数实现图像梯度的提取,就是用膨胀图像-腐蚀图像,获取一个图像中前景图像的边缘。还有我们的礼帽黑帽一定程度也能提取图像的边缘信息。 我们还在图像梯度里面详细

    2024年02月04日
    浏览(61)
  • python 第十二章 面向对象

    第一章 初识python 第二章 变量 第三章 基础语句 第四章 字符串str 第五章 列表list [] 第六章 元组tuple ( ) 第七章 字典dict {} 第八章 集合set {} 第九章 常用操作 第十章 函数 第十一章 文件操作 理解面向对象 面向对象是一种抽象化的编程思想,很多编程语言中都有的一种思想。

    2024年02月13日
    浏览(46)
  • C国演义 [第十二章]

    力扣链接 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 给定一个代表每个房屋存放金额的非负整数数组,计算你

    2024年02月17日
    浏览(41)
  • 第十二章 Transform组件(下)

    上一章节中我们介绍了Transform组件的属性和方法。我们发现 Transform 中有right,up和forward,而 Vector3 类中也有right,up和forward,他们是一回事嘛?我们使用Forward来说明两者之间的区别。我们知道,改变游戏对象的position位置,就可以形成移动效果。如果我们让游戏对象沿着for

    2024年02月01日
    浏览(35)
  • 11.第十二章.采购管理

    1、基于组织的经营目标和经营政策展开项目采购相应的运营活动,包括采购战略合作管理、釆购过程管理、采购管理技术和工具等3个方面。 2、企业仅依靠自身无力应对激烈的竞争。因此,必须摈弃“以企业为中心”的传统管理模式,代之以现代战略合作的管理模式。战略合

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包