外观模式

2020-07-23  本文已影响0人  竖起大拇指

1.什么是外观模式

我们去银行取钱,每个窗口都有个银行工作人员为大家服务。我们在取钱的过程中,只需要和窗口工作人员沟通就可以了,我们把银行卡给工作人员,输入密码就会给你取钱。在这个过程中,我们来分析下角色:
外部调用系统:银行取钱的人
复杂系统:银行系统
在复杂系统中,内部子系统:验钞机,打印机,保险箱等等

image.png

为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

外观模式又称为门面模式,它是一种对象结构型模式外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度。

2.UML结构图

image.png

外观模式包含如下两个角色:

外观模式中所指的子系统是一个广义的概念,它可以是一个类、一个功能模块、系统的一个组成部分或者一个完整的系统。子系统类通常是一些业务类,实现了一些具体的、独立的业务功能,

其典型代码:

  //外观类
  public class Facade{
    //被委托的对象
    SubSystemA a;
    SubSystemB b;
    SubSystemC c;
    SubSystemD d;

    public Facade(){
        a=new SubSystemA();
        b=new SubSystemB();
        c=new SubSystemC();
    }

    //提供给外部访问的方法
    public void methodA(){
      this.a.doSomethingA();
  }

 public void methodB(){
      this.b.doSomethingB();
  }

public void methodC(){
      this.c.doSomethingC();
  }

}

//SubSystem子系统角色
public class SubSystemA{
    public void doSomethingA(){
      System.out.println("子系统方法A");
  }

}

public class SubSystemB{
    public void doSomethingB(){
      System.out.println("子系统方法B");
  }
}

public class SubSystemC{
    public void doSomethingC(){
      System.out.println("子系统方法C");
  }
}

//客户端
Facade facade=new Facade();
facade.methodA();
facade.methodB();

3.使用场景

4.模式扩展

上一篇 下一篇

猜你喜欢

热点阅读