Skip to content

Latest commit

 

History

History
84 lines (57 loc) · 1.77 KB

外观模式.md

File metadata and controls

84 lines (57 loc) · 1.77 KB

外观模式

介绍

外观模式(Facade Pattern)在开发中的使用频率非常,第三方SDK一般都会使用外观模式。通过一个外观类使得整个系统的接口只有一个统一的高层接口。

定义

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易于使用。

使用场景

  1. 为一个复杂子系统提供一个简单接口。

  2. 当需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,可以让它们仅通过Facade接口进行通信,从而简化了它们之间的关系。

UML

外观模式

角色介绍

  • Facade:系统对外的统一接口,系统内部地工作。

  • SystemA、SystemB、SystemC:子系统接口

通用代码

Facade.java

public interface Facade {

    void operateA();

    void operateB();

    void operateC();

}

FacadeImpl.java

public class FacadeImpl implements Facade {

    private SystemA systemA = new SystemAImpl();
    private SystemB systemB = new SystemBImpl();
    private SystemC systemC = new SystemCImpl();

    @Override
    public void operateA() {
        systemA.operateA();
    }

    @Override
    public void operateB() {
        systemB.operateB();
    }

    @Override
    public void operateC() {
        systemC.operateC();
    }
}

SystemA.java

public interface SystemA {

    void operateA();

}

SystemAImpl.java

public class SystemAImpl implements SystemA {
    @Override
    public void operateA() {
        System.out.println("operateA");
    }
}