设计模式-结构型模式-外观模式

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。[DP]

复制代码
首先,定义子系统的各个组件接口和具体实现类:
// 子系统组件接口
public interface SubsystemA {
    void operationA();
}

public interface SubsystemB {
    void operationB();
}

public interface SubsystemC {
    void operationC();
}

// 子系统组件的具体实现
public class ConcreteSubsystemA implements SubsystemA {
    @Override
    public void operationA() {
        System.out.println("Subsystem A operation");
    }
}

public class ConcreteSubsystemB implements SubsystemB {
    @Override
    public void operationB() {
        System.out.println("Subsystem B operation");
    }
}

public class ConcreteSubsystemC implements SubsystemC {
    @Override
    public void operationC() {
        System.out.println("Subsystem C operation");
    }
}
接下来,创建外观类,它包含了对子系统中各个组件的引用,并提供了简化后的接口:
public class Facade {
    private SubsystemA subsystemA;
    private SubsystemB subsystemB;
    private SubsystemC subsystemC;

    public Facade() {
        subsystemA = new ConcreteSubsystemA();
        subsystemB = new ConcreteSubsystemB();
        subsystemC = new ConcreteSubsystemC();
    }

    // 客户端调用的简单接口
    public void operation() {
        subsystemA.operationA();
        subsystemB.operationB();
        subsystemC.operationC();
    }

    //TODO 客户机调用的接口可以根据不同的情况,对子系统的方法进行组合
}
最后,创建客户端代码来演示如何使用外观类:
public class FacadePatternExample {
    public static void main(String[] args) {
        Facade facade = new Facade();

        // 客户端通过外观类来调用子系统操作
        facade.operation();
    }
}
相关推荐
鱼跃鹰飞3 小时前
设计模式系列:工厂模式
java·设计模式·系统架构
老蒋每日coding10 小时前
AI Agent 设计模式系列(十九)—— 评估和监控模式
人工智能·设计模式
会员果汁11 小时前
23.设计模式-解释器模式
设计模式·解释器模式
「QT(C++)开发工程师」18 小时前
C++设计模式
开发语言·c++·设计模式
茶本无香19 小时前
设计模式之七—装饰模式(Decorator Pattern)
java·设计模式·装饰器模式
漂洋过海的鱼儿1 天前
设计模式——EIT构型(三)
java·网络·设计模式
老蒋每日coding2 天前
AI Agent 设计模式系列(十八)—— 安全模式
人工智能·安全·设计模式
老蒋每日coding2 天前
AI Agent 设计模式系列(十六)—— 资源感知优化设计模式
人工智能·设计模式·langchain
老蒋每日coding2 天前
AI Agent 设计模式系列(十七)—— 推理设计模式
人工智能·设计模式
冷崖2 天前
桥模式-结构型
c++·设计模式