Facade(外观模式/门面)

本文介绍了Facade(外观模式),这是一种结构型设计模式,旨在降低系统复杂性,提供一致的接口供客户端使用。通过创建一个抽象类,实现多个实体类,并建立一个外观类来简化客户端与子系统的交互。虽然它可能导致系统修改不便,但在层次化结构中作为各层入口,能有效解耦和提高灵活性。

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

Facade(外观模式/门面)

介绍

  • 外观模式(Facade Pattern)隐藏系统的复杂性,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。

  • 这种类型的设计模式属于结构型模式,涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

优点:

  • 解耦, 减少系统相互依赖
  • 提高灵活性、安全性

缺点:

  • 不符合开闭原则,如果要改东西很麻烦,继承重写都不合适

注意事项:

  • 在层次化结构中,可以使用外观模式定义系统中每一层的入口

实现

在这里插入图片描述

1、创建一个抽象类

public abstract class Company {
    abstract void function();
}

2、 创建继承类的实体类

public class TechnicalDepartment extends Company{
    @Override
    void function() {
        System.out.println("码代码.....");
    }
}
public class FinancialDepartment extends Company{
    @Override
    void function() {
        System.out.println("管理财务...");
    }
}

3、 创建一个外观类

public class Receptionist {
    private FinancialDepartment financialDepartment;

    private TechnicalDepartment technicalDepartment;

    public Receptionist() {
        financialDepartment = new FinancialDepartment();
        technicalDepartment = new TechnicalDepartment();
    }

    public void technicalDepartmentFunction () {
        technicalDepartment.function();
    }
  
    public void financialDepartmentFunction () {
        financialDepartment.function();
    }
}

4、 使用该外观类去访问各部门

public class FacadeDemo {
    public static void main(String[] args) {
        Receptionist receptionist = new Receptionist();
        receptionist.financialDepartmentFunction();
        receptionist.technicalDepartmentFunction();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值