美文网首页
十二、外观模式

十二、外观模式

作者: Serenity那年 | 来源:发表于2018-10-28 21:31 被阅读9次

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

外观模式结构图.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();
    }
}
四、总结
  • 1.在设计初期阶段,应该有意识的将不同层进行分离:数据访问层与业务逻辑层,业务逻辑层与View层的层与层之间建立外观Facade,这样可以为复杂的子系统提供一个简单的接口,使得耦合降低;
  • 2.在维护一个遗留的复杂的系统时,这个系统已经难以扩展与维护了,但是它又非常重要,新的需求必须依赖与它,此时可以为新系统开发出一个Facade类,来给遗留的架构提供简单的接口,让新系统与Facade对象交互,Facade与遗留的架构进行复杂的交互;
  • 3.外观模式完美的体现了依赖倒转原则(面向接口编程)和迪米特法则(最少知识原则)

相关文章

网友评论

      本文标题:十二、外观模式

      本文链接:https://www.haomeiwen.com/subject/vtlpsftx.html