什么是外观模式(Facade)?

364 阅读1分钟

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。

  1. 意图
    对外提供统一接口,屏蔽内部负复杂的实现流程,例如:springMVC的 DAO Service Controller。
  2. 实例
// 功能接口
interface FacadeCap{
    void play();
}

class FacadeCapImpl1 implements FacadeCap{
    @Override
    public void play() {
        System.out.println("Facade1::play()");
    }
}

class FacadeCapImpl2 implements FacadeCap{
    @Override
    public void play() {
        System.out.println("Facade2::play()");
    }
}

class FacadeCapImpl3 implements FacadeCap{
    @Override
    public void play() {
        System.out.println("Facade3::play()");
    }
}

// 外部统一调用接口
interface Facade{
    void play1();
    void play2();
    void play3();
}

class FacadeImpl implements Facade{
    private FacadeCap facadeCap1;
    private FacadeCap facadeCap2;
    private FacadeCap facadeCap3;

    public FacadeImpl(){
        facadeCap1 = new FacadeCapImpl1();
        facadeCap2 = new FacadeCapImpl2();
        facadeCap3 = new FacadeCapImpl3();
    }

    @Override
    public void play1() {
        facadeCap1.play();
    }

    @Override
    public void play2() {
        facadeCap2.play();
    }

    @Override
    public void play3() {
        facadeCap3.play();
    }
}
  1. 测试
// 测试
class FacadeTest{
    public static void main(String[] args){
        Facade facade = new FacadeImpl();
        facade.play1();
        facade.play2();
        facade.play3();
    }
}

运行结果:

Facade1::play()
Facade2::play()
Facade3::play()

想看更多吗?请访问:设计模式