外观模式:隐藏了复杂系统的复杂性,并提供一个简单的接口来访问系统

发布时间 2023-06-08 15:00:55作者: 穆海如枫

外观模式是一种结构型设计模式,它为复杂子系统提供了一个统一的接口,从而使其更易于使用。外观模式隐藏了子系统的复杂性,并将其封装在一个高级接口中。在使用外观模式时,客户端只需要与外观对象进行交互,而不需要直接与子系统中的各个组件交互。

// 子系统中的组件
class CPU {
    public void processData() {
        System.out.println("CPU: processing data...");
    }
}

class Memory {
    public void load() {
        System.out.println("Memory: loading data...");
    }
}

class HardDrive {
    public void readData() {
        System.out.println("Hard drive: reading data...");
    }
}

// 外观类
class ComputerFacade {
    private CPU cpu;
    private Memory memory;
    private HardDrive hardDrive;

    public ComputerFacade() {
        this.cpu = new CPU();
        this.memory = new Memory();
        this.hardDrive = new HardDrive();
    }

    public void startComputer() {
        System.out.println("Starting computer...");
        cpu.processData();
        memory.load();
        hardDrive.readData();
        System.out.println("Computer started.");
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        ComputerFacade computer = new ComputerFacade();
        computer.startComputer();
    }
}

在上面的代码中,CPUMemoryHardDrive分别代表子系统中的组件,而ComputerFacade是外观类。

ComputerFacade中,我们将三个子系统组件实例化并暴露一个公共方法startComputer()。客户端只需要调用该方法即可启动计算机,而不需要了解计算机内部的复杂性。

通过使用外观模式,客户端代码变得更加简单,而且如果需要修改或者更新子系统的实现,客户端代码不受影响。