前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >13.设计模式--外观模式(Facade模式)

13.设计模式--外观模式(Facade模式)

作者头像
大猫的Java笔记
发布2021-11-11 09:39:57
9780
发布2021-11-11 09:39:57
举报
文章被收录于专栏:大猫的Java笔记大猫的Java笔记

1.定义

Facade模式名为外观模式,是一种结构型模式,外观模式是一种非常简单的设计模式。当系统过于复杂时,如果需要调用多个子系统来完成业务,此时会变的非常的复杂,而外观模式则是开一个窗口,相当于一个中介来帮你整合你要调用的子系统,而调用者只需要关心这个窗口就行了。

例如现在我需要开一家公司,开公司需要工商注册、银行开户、纳税登记而我作为一个开公司的人(不差钱),此时我觉得太麻烦了还有这么多流程,此时我就找了一个叫外观模式的人帮我办理。而我只需要关注这个外观模式的人就行了。

2.外观模式结构图

Facade就是一个窗口,注册公司的流程都由他来处理,而AdminOfIndustry、Bank、Taxation分别表示工商注册、银行开户和纳税登记。

3.外观模式实现

Company就是公司的实体,包含了公司名字,公司法人等字段。还对外提供了构造方法,这是方便于注册公司的时候进行调用,而注册公司则是通过AdminOfIndustry来实现的。

AdminOfIndustry代表的是工商注册,也就是工商局,直接调用Company来生成公司的实例。

Bank代表的银行开户,通过openAccount方法,来根据公司名字注册一个银行卡,其中包括了银行卡属于的公司以及卡号。

Taxation代表的纳税登记,其中applyTaxCode则是通过公司名字进行一个纳税登记,所以Taxation中存放了公司名称。

Facade是帮我们去注册公司的人,名字就叫外观吧,我们只需要给他提供自己要注册的公司名字以及法人,而至于跑工商局,跑银行以及去税务局都是这个人来。所以在Test中我们只是给了要注册的名字以及法人,这样公司就已经注册完成了。通过打印可以看到公司名字以及法人信息。

外观模式中登场的角色

Facade(窗口)角色,用于将复杂的系统进行整合然后暴露出一个窗口提供给调用者,文中由Facade类进行扮演。

构成系统的许多其他角色,这些角色各自完成各自的工作,他们并不知道Facade觉得,而Facade则是对他们的一个整合,文中由AdminOfIndustry、Bank、Taxation进行扮演此角色。

Client(请求者),用于发起调用,也就是注册公司的发起者,文中由Test类扮演此角色。

参考文献《图解设计模式》、廖雪峰的官网。

代码获取地址:https://gitee.com/bughong/design-pattern

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大猫的Java笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档