【设计模式】结构型:门面模式(Facade Pattern)

本文介绍了外观模式的概念,它是面向对象编程中的一种简化设计模式,通过提供一个统一的接口,隐藏系统的复杂性,使得客户端能够更简单地使用系统。文章以股票型基金为例,解释了如何通过外观模式来简化客户端与系统之间的交互。

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

门面模式,也叫外观模式,定义:

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。

这个设计模式最核心的作用就是屏蔽内部系统或模块之间的差异,对外提供统一的接口和使用方法。

在微服务或者多系统架构中,门面模式应用的比较多,在单服务或者单系统中,门面模式应用的比较少。

简单来说,门面模式就是一个有资质且规范性较强的中介,它掌握着各种各样的资源,客户需要某个资源就直接和中介联系,中介将资源处理好以后提供给客户,客户无需关心中介和资源之间的交互。

门面模式没有固定的编程模式,符合设计思路,能封装内部资源差异,能对外提供统一的使用规范,即可。

举个例子,注册公司通常有三个核心步骤:

  1. 前往工商局,申请公司营业执照
  2. 前往银行,开设公司账户
  3. 前往税务局,开设纳税号

工商局、银行、税务局,都有自己的系统:

// 工商注册
public class AdminOfIndustry {
    public Company register(String name) {
        // 业务逻辑
    }
}

// 银行开户
public class Bank {
    public String openAccount(String companyId) {
        // 业务逻辑
    }
}

// 纳税登记
public class Taxation {
    public String applyTaxCode(String companyId) {
        // 业务逻辑
    }
}

使用门面模式,就需要有一个代理中介,负责完成这三个步骤:

public class Facade {
    public Company openCompany(String name) {
        Company c = this.admin.register(name);
        String bankAccount = this.bank.openAccount(c.getId());
        c.setBankAccount(bankAccount);
        String taxCode = this.taxation.applyTaxCode(c.getId());
        c.setTaxCode(taxCode);
        return c;
    }
}

以后再注册公司就很方便了:

Company c = facade.openCompany("公司名称");

门面模式的其它应用场景,举例:

  1. 前后端分离开发模式中,后端服务提供接口,这也算是门面模式,通过接口封装了后端的复杂性
  2. 微服务网关系统,客户端只和网关打交道,对网关背后的微服务一无所知,典型的门面模式
  3. 炒股票使用证券公司客户端,也是门面模式,股民通过证券公司买卖股票,证券公司完成背后的真实交易
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值