• 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

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

  • 相关阅读:
    Git实操图文详解系列教程(1)——Git原理与实践
    ik分词器
    Spark Standalone架构及安装部署
    精彩回顾 | 云原生系统软件的产业应用
    java计算机毕业设计高速公路收费管理MyBatis+系统+LW文档+源码+调试部署
    区块链(3):区块链去中心化
    贪心算法选择不相交区间
    9.java项目-尚医通(9)
    2022-08-18 多线程安全的Parallel Hashmap
    CoreDX DDS应用开发指南(6)开发订阅应用程序
  • 原文地址:https://blog.csdn.net/sunyuhua_keyboard/article/details/132673158