Facade Pattern and Encapsulation—— Structure Class
阅读原文时间:2023年08月29日阅读:1

如果只看代码的话,应该可以说Facade pattern(门面设计模式)是一种最简单的代码结构,不就封装吗!这玩意谁不会!

还是看它背后所蕴含的思想吧,看了之后发现背后的思想也很简单,非常好理解。 - -。

Think

Encapsulation:

在物理世界中,从古代的弹药子弹的发展其实就是对弹药的封装,因此大大提高了装弹效率。经过演化,发现一次装一发子弹还是不够高效,如果再进一步,在子弹外再封装一层弹夹的话则会更显著地提升效率。

在Java编程中,一对大括号{ }就是类、方法等结构的外壳、边界,它能很好地把类的各种属性及行为包裹起来,将它们封装在类内部并固化成一个整体。封装好的类如同一个黑匣子,外部无法看到内部的构造及运转机制,而只能访问其暴露出来的属性或方法。

门面设计模式:

本质上来讲,它和封装的含义是一样的,无非是一般概念里的封装只是针对同一个类内的属性,方法进行封装,这里的封装更泛一些,能包含更广泛的子系统的方法。

门面设计模式可以隐藏系统的内部复杂性,提供一个简化的操作接口,使得客户端更容易使用系统。

该模式通过提供一个高层次的接口,将一个或多个子系统的复杂操作封装起来,使得客户端只需要与门面对象进行交互,而不需要直接与子系统的各个组件进行通信。这样可以减少客户端与子系统之间的耦合,降低了系统的复杂性,同时提供了一种简洁、统一的界面。

Example - 音响系统

假设我们有一个音响系统,包含多个子系统组件,如音频播放器、发光灯和温度控制器。我们可以创建一个音响门面类,负责封装这些子系统的复杂操作,并提供一个简单的接口供客户端使用。

// 子系统组件 - 音频播放器
class AudioPlayer {
    public void play() {
        System.out.println("播放音频");
    }
}

// 子系统组件 - 发光灯
class Light {
    public void turnOn() {
        System.out.println("打开发光灯");
    }
}

// 子系统组件 - 温度控制器
class TemperatureController {
    public void setTemperature(int temperature) {
        System.out.println("设置温度为:" + temperature + "℃");
    }
}

// 音响门面类
class StereoFacade {
    private AudioPlayer audioPlayer;
    private Light light;
    private TemperatureController temperatureController;

    public StereoFacade() {
        audioPlayer = new AudioPlayer();
        light = new Light();
        temperatureController = new TemperatureController();
    }

    // 提供简化的接口
    public void startMusic() {
        audioPlayer.play();
        light.turnOn();
        temperatureController.setTemperature(25);
        System.out.println("音乐系统已启动");
    }
}

// 客户端代码
public class Main {
    public static void main(String[] args) {
        StereoFacade stereo = new StereoFacade();
        stereo.startMusic();
    }
}

在上述代码中,StereoFacade类充当门面类,它封装了音频播放器、发光灯和温度控制器的复杂操作。客户端代码只需要与StereoFacade交互,通过调用startMusic方法,即可启动音响系统,而无需关心底层子系统的具体实现细节

通过门面模式,客户端代码与子系统之间的耦合度得到降低,系统的复杂性得到简化,同时提供了一个简单、统一的接口,便于客户端的使用。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章