首页 > 其他分享 >外观模式(也叫做门面模式)

外观模式(也叫做门面模式)

时间:2022-11-26 18:55:36浏览次数:68  
标签:外观 DVD void System 模式 println 门面 public out

外观模式(也叫做门面模式):

影院管理项目:

 

 

 

 

 

 

 

 

 

外观模式的基本介绍:

 

 

 

外观模式的原理类图:

 

 

 

原理类图的说明(外观模式的角色)

1)外观类(Facade):为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给适当的子系统对象。

2)调用者(Client):外观接口的调用者。

3)子系统的集合:指模块或者子系统,处理Facade对象指派的任务,他是功能实际的提供者。

 

 

 

 

 

 

代码实现:

 

 

package com.sky.facade;

public class DVDPlayer {

    //单例模式 饿汉式
    private static DVDPlayer dvdPlayer = new DVDPlayer();

    /**
     * 私有化五参数构造方法
     */
    private DVDPlayer(){

    }

    /**
     * 提供全局唯一的访问点
     *
     */
    public static DVDPlayer getInstance(){
        return dvdPlayer;
    }

    /**
     * DVD的操作方法
     */

    //打开
    public void open(){
        System.out.println("DVD开机。。。");
    }
    //关机
    public void close(){
        System.out.println("DVD关机。。。");
    }
    //播放
    public void play(){
        System.out.println("播放影片。。。");
    }
    //暂停
    public void pause(){
        System.out.println("DVD暂停。。。");
    }
    //使用操作
    public void option(){
        System.out.println("DVD使用操作。。。");
    }

}

 

package com.sky.facade;

//灯光设备;
public class Lamplight {

    private static Lamplight lamplight = new Lamplight();
    //使用单例模式之饿汉式;
    private Lamplight(){

    }

    public static Lamplight getInstance(){
        return lamplight;
    }

    //管理灯光;
    public void openLamp(){
        System.out.println("开灯");
    }

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

    public void closeLamp(){
        System.out.println("关灯");
    }
}

 

package com.sky.facade;

/**
 * 爆米花机
 */
public class PopCorn {

    public static PopCorn popCorn = new PopCorn();

    private PopCorn(){

    }

    public static PopCorn getInstance(){
        return popCorn;
    }

    /**
     * 爆米花设备操作
     */
    public void openPop(){
        System.out.println("爆米花设备开机。。。");
    }

    public void closePop(){
        System.out.println("爆米花设备关机。。。");
    }

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

 

package com.sky.facade;

/**
 * 外观类(界面类)
 */
public class TheatreFacade {

    //管理多个设备
    private DVDPlayer dvdPlayer;
    private Lamplight lamplight;
    private PopCorn popCorn;

    public TheatreFacade(){
        super();
        this.dvdPlayer = DVDPlayer.getInstance();
        this.lamplight = Lamplight.getInstance();
        this.popCorn = PopCorn.getInstance();
    }

    //观看电影前的准备
    public void ready(){
        //DVD,爆米花机,灯光
        dvdPlayer.open();
        popCorn.openPop();
        lamplight.openLamp();
    }

    //观看电影中的准备
    public void play(){
        dvdPlayer.play();
        lamplight.dim();
    }

    //观影后的管理
    public void finish(){
        //关闭DVD,关闭爆米花机,关闭灯光
        dvdPlayer.close();
        popCorn.closePop();
        lamplight.closeLamp();
    }

}

 

package com.sky.facade;

/**
 * 客户端
 */
public class Client {

    public static void main(String[] args) {
       //在客户端,只需要引用界面类就可以了
        TheatreFacade facade = new TheatreFacade();
        facade.ready();
        System.out.println("=======================");
        facade.play();
        System.out.println("=======================");
        facade.finish();
    }

}

 

运行结果:

DVD开机。。。

爆米花设备开机。。。

开灯

=======================

播放影片。。。

灯光变暗

=======================

DVD关机。。。

爆米花设备关机。。。

关灯

 

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

 

标签:外观,DVD,void,System,模式,println,门面,public,out
From: https://www.cnblogs.com/dongyaotou/p/16928017.html

相关文章

  • 命令模式(Command)
    将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。 结构:......
  • 企业办公新模式,随时随地云上协同!
    如今,越来越多人参与到项目中进行协同,因此对企业内部的协同办公提出了更高的要求,同时加之大环境下的居家办公要求,导致很多人一回到家之后就会出现无电脑可用、没有办公室电脑......
  • D110设计模式_4备忘录模式20221122
     备忘录模式(MementoPattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。客户不与备忘录类耦合,与备忘录管理类耦合。优点: 1、给用......
  • 中介者模式(Mediator )
    用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。场景:公司多个部门之间,若直接互相打交......
  • 迭代器模式(Iterator)
    用来遍历集合的工具。实现方式:使用一个游标记录当前读取位置。容器中使用迭代器:   一般迭代器都有的方法,整个接口:publicinterfaceMyInterator{......
  • D108设计模式_2抽象工厂模式20221120
    抽象工厂模式(AbstractFactoryPattern):属于创建型模式,它提供了一种创建对象的最佳方式,以一个超级工厂创建其他工厂。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不......
  • D107设计模式_1构建模式20221119
     一、构建模式构建模式属于对象的创建模式,可以把对象的内部属性和构建方法分离开来,可以构建自己需要的属性。当有些对象比较复杂的时候,需要的属性比较灵活的就需要用到......
  • 责任链模式(chain of responsibility)
    一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。定义:为了避免请求发送者与多个请求处理者耦合在一起(使用if 选择语句处理请求),将所有请求的处理者通......
  • (十三)抽象工厂模式
    1概述抽象工厂模式(AbstractFactory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。AbstractProductA和AbstractProductB是两个抽象产品,而Pro......
  • C++ 设计模式 目录
    设计模式推荐阅读ohmyfish.net​未来更新会先在​​ohmyfish.net​​更新,等到一定规模会发到平台上,如果有修改和补充也会在​​ohmyfish​​上进行。目标理解松耦合设计思......