设计模式—外观模式

外观模式是一种结构型设计模式,用于简化子系统的接口调用,提供一个高层的统一入口。它通过组合多个子系统的接口,形成套餐式的调用方式,使得客户可以更方便地使用复杂的系统。例如,快餐店套餐就是对多种食物接口的封装。本文介绍了外观模式的概念,并通过代码示例展示了其实现过程,包括子系统接口、中间接口的定义以及测试代码的编写,旨在帮助开发者更好地理解和应用外观模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计模式—外观模式

什么是外观模式

外观模式属于设计模式中的结构型模式,主要适用于存在众多接口并需要按照不同顺序调用的场合,它可以为子系统的众多接口提供统一的高层调用接口,使子系统更容易使用。简单来说,外观模式就是对接口进行组合并封装成高一级的接口的模式。

举一个例子,快餐店里有许多类型的食物(类似于子系统中的接口),顾客想吃不同的食物时就需要自己去挑选(相当于其他业务组去调用不同的接口),如果快餐店自己把大多数顾客想吃的食物搭配组合起来推出套餐,那么顾客点餐就方便快捷得多,会获得比较好的体验(组合调用接口的舒适度提升)。当然,快餐店也支持顾客自己自由搭配,不是非套餐不可(不影响接口的可重用性)。

外观模式就相当于快餐店的各个套餐,对于需要重复调用的接口组合方案,我们可以新建一个中间层,由中间层给调用方提供各式各样的“套餐”。

外观模式的实现

首先是子系统的接口方法定义(这里只列举一个子系统)

public class SubSystemA {
    public void methodA(){
        System.out.println("接口A");
    }
}

然后是编写中间接口:

public void comboMethod1(){
    SubSystemA subSystemA = new SubSystemA();
    SubSystemB subSystemB = new SubSystemB();
    SubSystemC subSystemC = new SubSystemC();
    //对于执行顺序有严格要求的组合,外观模式也能进行很好地处理
    System.out.println("调用中间接口1:");
    subSystemA.methodA();
    subSystemB.methodB();
    subSystemC.methodC();
    System.out.println();
}

public void comboMethod2(){
    SubSystemA subSystemA = new SubSystemA();
    SubSystemD subSystemD = new SubSystemD();
    SubSystemE subSystemE = new SubSystemE();
    //对于执行顺序有严格要求的组合,外观模式也能进行很好地处理
    System.out.println("调用中间接口2:");
    subSystemA.methodA();
    subSystemD.methodD();
    subSystemE.methodE();
    System.out.println();
}

最后是测试代码:

public static void main(String[] args) {
    //中间接口在FacadePatterns类中定义,所以需要创建该类实例对象
    FacadePatterns facade = new FacadePatterns();
    //调用中间接口1
    facade.comboMethod1();
    //调用中间接口2
    facade.comboMethod2();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值