十二、外观模式

2018-10-28  本文已影响9人  Serenity那年

外观模式:定义了一个高层接口,这个接口使得子系统更加容易使用;另一种说法:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

外观模式结构图.png
一、子系统类
package com.zcbl.client.zcblsdk.facademodel;

/**
 * Created by serenitynanian on 2018/6/5.
 * 子系统
 */

public class SubSystemOne {
    public void methodOne(){
        System.out.println("子系统方法一");
    }
}



/**
 * Created by serenitynanian on 2018/6/5.
 * 子系统
 */

public class SubSystemTwo {
    public void methodTwo(){
        System.out.println("子系统方法二");
    }
}


/**
 * Created by serenitynanian on 2018/6/5.
 * 子系统
 */

public class SubSystemThree {
    public void methodThree(){
        System.out.println("子系统方法三");
    }
}
二、外观类:它需要了解所有子系统的方法或属性,进行组合,以备外界调用

/**
 * Created by serenitynanian on 2018/6/5.
 * 外观模式
 * 外观类:它需要了解所有子系统的方法或属性,进行组合,以备外界调用
 */

public class Facade {

    SubSystemOne subSystemOne ;
    SubSystemTwo subSystemTwo ;
    SubSystemThree subSystemThree ;

    public Facade() {
        this.subSystemOne = new SubSystemOne();
        this.subSystemTwo = new SubSystemTwo();
        this.subSystemThree = new SubSystemThree();
    }


    public void methodOne(){
        System.out.println("--------执行方法组One------");
        subSystemOne.methodOne();
        subSystemTwo.methodTwo();

    }

    public void methodTwo(){
        System.out.println("--------执行方法组Two------");
        subSystemOne.methodOne();
        subSystemThree.methodThree();

    }

    public void methodThree(){
        System.out.println("--------执行方法组Three------");
        subSystemTwo.methodTwo();
        subSystemThree.methodThree();

    }

}
三、客户端调用
/**
 * Created by serenitynanian on 2018/6/5.
 * 由于Facade的作用,客户端可以根本不知道三个子系统类的存在的;
 *
 * 备注:外观模式完美的体现了依赖倒转原则(面向接口编程)和迪米特法则(最少知识原则)的思想
 */

public class Test {


    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.methodOne();
        facade.methodTwo();
        facade.methodThree();
    }
}
四、总结
上一篇 下一篇

猜你喜欢

热点阅读