博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
外观模式
阅读量:4181 次
发布时间:2019-05-26

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

外观模式,也叫门面模式(Facade Pattern)也是接口型模式的一种。

定义

要求一个子系统的外部与其内部通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使的子系统更易于使用,从而降低了子系统的复杂性和依赖(当需要的时候,客户端也可以视外观不存在,直接访问子系统底层的接口)。

使用

  1. 为一个比较复杂的子系统提供一个简单的接口。
  2. 将客户程序和子系统的实现部分分离,提高子系统的独立性和可移植性。
  3. 简化了子系统间的依赖关系。
1、使用时注意的问题:

设计外观时,不需要增加额外的功能。

不要从外观方法中返回子系统中的组件给客户。
应用外观模式的目的是提供一个高层次的接口。因此,外观方法最适合提供特定的高层次的业务服务,而不是进行底层次的单独的业务执行。

2、缺点

不符合开闭原则,即对修改关闭,对扩展开放,当业务逻辑比较复杂时,要修改外观的功能就必须去修改外观角色的代码。

3、应用场景

维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,此时可以为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。

4、案例

外观类客户端

public class FacadeClient {
public static void main(String[] args) {
// 由于Facade的作用,客户端可以根本不知道四个子系统的存在 Facade facade = new Facade(); facade.methodA(); facade.methodB(); }}

外观类,它需要了解所有的子系统的方法或属性,进行组合,以备外界调用。

public class Facade {
SubSystemOne subSystemOne; SubSystemTwo subSystemTwo; SubSystemThree subSystemThree; SubSystemFour subSystemFour; public Facade() {
subSystemOne = new SubSystemOne(); subSystemTwo = new SubSystemTwo(); subSystemThree = new SubSystemThree(); subSystemFour = new SubSystemFour(); } public void methodA() {
System.out.println("方法组A:"); subSystemOne.methodOne(); subSystemTwo.methodTwo(); subSystemFour.methodFour(); } public void methodB() {
System.out.println("方法组B:"); subSystemThree.methodThree(); subSystemFour.methodFour(); }}

子系统类

class SubSystemOne {
public void methodOne() {
System.out.println("子系统方法一"); }}class SubSystemTwo {
public void methodTwo() {
System.out.println("子系统方法二"); }}class SubSystemThree {
public void methodThree() {
System.out.println("子系统方法三"); }}class SubSystemFour {
public void methodFour() {
System.out.println("子系统方法四"); }}
5、案例类图

上一篇:

下一篇:

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

你可能感兴趣的文章
酸了!会这个技能的 AI 工程师年薪至少35W起!
查看>>
靠,竟然有如此沙雕的代码注释!
查看>>
大一新生开发的小工具火了,网友:我好菜
查看>>
为什么大学生学点Python容易拿高薪?
查看>>
小米官方良心出品,永久免费无广告!!
查看>>
新版 Win 10 来了。网友:要被丑哭了……
查看>>
无意中发现了一位清华大佬的代码模版
查看>>
2021 年第一款神器,非它莫属!!
查看>>
太绝了!一篇文章说清了Python学习的全部路线!
查看>>
面试前,千万要注意这件事!!!
查看>>
最新通知:国内一大批网站和APP将告别弹窗广告!
查看>>
GitHub 开源神器:图片秒变文件
查看>>
老师吴恩达,身家又增 20 亿!
查看>>
基金跌了怎么办?来听听大咖教你怎么做!
查看>>
笑死,小米新logo是这么来的
查看>>
假如易立竞吐槽程序员。。。
查看>>
年薪百万必读书单,送100本!
查看>>
1MB小工具,一键关闭Windows最烦人的功能!
查看>>
深度学习绘图模板.pptx
查看>>
B站向北邮道歉!!!
查看>>