• java 实现外观模式


    外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个简化的接口,用于访问一组相关的接口或子系统。外观模式的主要目的是隐藏复杂的系统结构,提供一个更简单的接口供客户端使用。以下是一个简单的Java示例,演示如何实现外观模式:

    首先,假设我们有一个音响系统,它包含了多个子系统,如音响、DVD播放器和投影仪。每个子系统都有自己的方法和状态。

    // 子系统1:音响
    public class StereoSystem {
        public void turnOn() {
            System.out.println("Stereo System is ON");
        }
    
        public void turnOff() {
            System.out.println("Stereo System is OFF");
        }
    }
    
    // 子系统2:DVD播放器
    public class DVDPlayer {
        public void play() {
            System.out.println("DVD Player is playing");
        }
    
        public void stop() {
            System.out.println("DVD Player is stopped");
        }
    }
    
    // 子系统3:投影仪
    public class Projector {
        public void turnOn() {
            System.out.println("Projector is ON");
        }
    
        public void turnOff() {
            System.out.println("Projector is OFF");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    接下来,我们创建一个外观类 HomeTheaterFacade,它提供了一个简单的接口,封装了所有子系统的操作:

    public class HomeTheaterFacade {
        private StereoSystem stereoSystem;
        private DVDPlayer dvdPlayer;
        private Projector projector;
    
        public HomeTheaterFacade() {
            this.stereoSystem = new StereoSystem();
            this.dvdPlayer = new DVDPlayer();
            this.projector = new Projector();
        }
    
        public void watchMovie() {
            System.out.println("Get ready to watch a movie...");
            stereoSystem.turnOn();
            dvdPlayer.play();
            projector.turnOn();
        }
    
        public void endMovie() {
            System.out.println("Movie is over. Shutting down...");
            projector.turnOff();
            dvdPlayer.stop();
            stereoSystem.turnOff();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    现在,客户端可以通过使用 HomeTheaterFacade 来操作整个家庭影院系统,而无需了解每个子系统的细节:

    public class FacadePatternDemo {
        public static void main(String[] args) {
            HomeTheaterFacade homeTheater = new HomeTheaterFacade();
    
            // 开始观影
            homeTheater.watchMovie();
    
            // 结束观影
            homeTheater.endMovie();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    使用外观模式,客户端代码变得更简单,因为它不必了解复杂的子系统结构和操作。外观模式提供了一个更高级别的接口,使得系统更易于使用和维护。

  • 相关阅读:
    EIP-3664合约研究笔记06--text功能分析
    CG MAGIC进行实体渲染后!分析渲染器CR和VR的区别之处!
    Springboot+Rabbitmq消费者注解详解、改序列化方式
    CAS:111790-37-5_Biotin-NH2_生物素-氨基 生物素化化合物
    Docker的运用场景 103.53.124.2
    电脑DLL修复工具,一键解决计算机dll丢失
    目标检测新SOTA:YOLOv9问世,新架构让传统卷积重焕生机(附代码)
    Vue 3自定义指令:扩展你的应用功能
    2024年6月 青少年python三级等级考试真题试卷
    【Linux 系统】gcc/g++使用零星整理
  • 原文地址:https://blog.csdn.net/sunyuhua_keyboard/article/details/132673158