博客
关于我
外观模式
阅读量:810 次
发布时间:2019-03-24

本文共 1527 字,大约阅读时间需要 5 分钟。

外观模式解析

外观模式(Facade Pattern),又称门面模式,是软件设计中一种常用的设计模式。它通过为多个复杂子系统提供一个统一的接口,使外部应用无需关心内部子系统的具体实现细节,从而降低了系统的复杂性,提高了可维护性和灵活性。

模式本质

外观模式的核心思想是把零散的功能模块抽象成一个整体。通过引入中介类,将分散的功能组合成一个统一的服务接口,简化了外部对系统的访问需求。这种设计理念强调功能的整合与标准化,避免了过度耦合和功能孤岛的产生。

典型场景

可以想象,在房建领域,装修公司充当外观角色,整合了墙工、水电是否和贴砖等分散功能。通过统一的接口,客户只需调用一个服务,房屋装修工作立即完成。这正是外观模式的实际应用场景:它将零散、分散的功能模块,复合成一个易于使用的整体服务。

以代码为例

让我们用一个简单的例子来理解外观模式。假设有三个子系统:刷墙、装修公司、地砖铺设。每个子系统都有自己的处理逻辑:

  • 刷墙类:负责给墙刷漆
  • 装修公司类:协调其他子系统完成整体装修工作
  • 地砖铺设类:负责地板砖的安装

装修公司类将各子系统通过统一接口暴露给外部,外部只需调用一次装修任务即可完成整个装修流程。这解决了内件复杂性问题,使外部无需关心具体实现细节。

实现示例

class Facade {    private Wall washer;    private Electrician electrician;    private Carpenter carpenter;    Facade() {        this.washer = new Wall();        this.electrician = new Electrician();        this.carpenter = new Carpenter();    }    void decorate() {        washer.washWall();        electrician.installElectrics();        carpenter.InstallCarpentry();    }}// 子系统class Wall {    void washWall() { System.out.println("刷墙..."); }}class Electrician {    void installElectrics() { System.out.println("安装电路..."); }}class Carpenter {    void InstallCarpentry() { System.out.println("安装木工..."); }}// 测试类class Test {    public static void main(String[] args) {        Facade facade = new Facade();        facade.decorate();    }}// 输出:// 刷墙... installing电路...安装木工...

� Chí angel şeyler

通过该设计模式,用户可以避免了直接处理复杂的内部系统逻辑,降低了耦合度,提高了系统的可扩展性和维护性。此外,外观模式还为系统集成提供了良好的灵活性,特别是在搭建复杂应用时,能够更轻松地整合各种分布式服务。

总的来说,外观模式的适用场景是当系统内部存在多个既不相互关联也不相互兼容的子系统时,可以通过一个统一接口将这些子系统整合在一起,从而实现系统功能的透明化和批量化操作,解决了功能分散带来的问题。

转载地址:http://yyhkk.baihongyu.com/

你可能感兴趣的文章
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_使用NIFI表达式语言_来获取自定义属性中的数据_NIFI表达式使用体验---大数据之Nifi工作笔记0024
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_内嵌ZK模式集群2_实际操作搭建NIFI内嵌模式集群---大数据之Nifi工作笔记0016
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_实际操作_03---大数据之Nifi工作笔记0035
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_02---大数据之Nifi工作笔记0034
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_说明操作步骤---大数据之Nifi工作笔记0028
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002---大数据之Nifi工作笔记0069
查看>>