设计模式-外观模式

外观模式

定义:他为子系统中的一组接口提供一个统一的高层接口,这使得子系统更加容易使用。

外观模式是"迪米特法则"的典型应用。只要是高层模块需要调度多个子系统时,我们都自觉地编写一个新的类封装,提供出精简的接口。

Facade类封装了子系统,可以提供出多个接口,简化客户角色的调用。

代码示例:

package com.facade;

public interface Facade {
    
    /*  下面随便组装几个功能  */
    
    void function12();
    
    void function23();
    
    void function123();
    
}
package com.facade;

public class FacadeImpl implements Facade{

    private Sub1 sub1;
    
    private Sub2 sub2;
    
    private Sub3 sub3;
    
    public FacadeImpl() {
        super();
        this.sub1 = new Sub1Impl();
        this.sub2 = new Sub2Impl();
        this.sub3 = new Sub3Impl();
    }

    public FacadeImpl(Sub1 sub1, Sub2 sub2, Sub3 sub3) {
        super();
        this.sub1 = sub1;
        this.sub2 = sub2;
        this.sub3 = sub3;
    }

    public void function12() {
        sub1.function1();
        sub2.function2();
    }

    public void function23() {
        sub2.function2();
        sub3.function3();
    }

    public void function123() {
        sub1.function1();
        sub2.function2();
        sub3.function3();
    }

}

Sub1,Sub2,Sub3本来3个接口各自为战,现在有了FacadeImpl类来统一指挥,外观接口则是提供给客户端使用的,比如客户如果需要调sub1,sub2,就直接调FacadeImpl类的function12()方法,而让客户端只依赖于外观接口。

返回目录

posted @ 2021-06-27 23:13  女友在高考  阅读(66)  评论(0编辑  收藏  举报