• Facade


    外观模式:为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层的接口,这个接口使得一子系统更加容易使用。

    它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。

    体现了依赖倒转和迪米特法则

     1 class SubSystemOne {
     2 
     3     public void methodOne(){
     4         System.out.println("子系统方法 - 1");
     5     }
     6     
     7 }
     8 
     9 class SubSystemTwo {
    10 
    11     public void methodTwo(){
    12         System.out.println("子系统方法 - 2");
    13     }
    14     
    15 }
    16 
    17 class SubSystemThree {
    18 
    19     public void methodThree(){
    20         System.out.println("子系统方法 - 3");
    21     }
    22     
    23 }
     1 //外观类,它需要了解所有子系统的方法或者属性,进行组合,以备外界调用。
     2 public class Facade {
     3 
     4     SubSystemOne subSystemOne;
     5     SubSystemTwo subSystemTwo;
     6     SubSystemThree subSystemThree;
     7     
     8     public Facade(){
     9         subSystemOne = new SubSystemOne();
    10         subSystemTwo = new SubSystemTwo();
    11         subSystemThree = new SubSystemThree();
    12     }
    13     
    14     public void operateOne(){
    15         subSystemOne.methodOne();
    16         subSystemTwo.methodTwo();
    17         subSystemThree.methodThree();
    18     }
    19     
    20     public void operateTwo(){
    21         subSystemOne.methodOne();
    22         subSystemThree.methodThree();
    23     }
    24 }
    1     public static void main(String[] args) {
    2         //Facade 的调用,客户端可以根本不知三个子系统类的存在。
    3         Facade facade = new Facade();
    4         facade.operateOne();
    5         System.out.println("===============");
    6         facade.operateTwo();
    7     }

    打印结果:

    子系统方法 - 1
    子系统方法 - 2
    子系统方法 - 3
    ===============
    子系统方法 - 1
    子系统方法 - 3

     

    外观模式使用:

    设计初期,应该有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑 数据访问层、业务逻辑层、表示层 的层与层之间建立外观(Facade),这样可以为复杂的子系统提供一个简单的接口,使得耦合性大大降低。

    其次,在开发的阶段,子系统不断往往因为不断地重构变得复杂,大多模式使用时会产生很多很小的类,这本是好事,但也会给外部调用它们的程序带来使用上的困难,增加外观Facade 可以提供一个简单地接口,减少它们的依赖。

    第三,在维护一个遗留的大型系统,可能这个系统已经非常难以维护和扩展,但因为它包含非常重要的功能,新的需求开发必须要依赖它。此时用Facade也是非常适合的。为新的系统开发一个外观 Facade 类,来提供设计粗糙或高度复杂的遗留代码比较清晰简单地接口,让新系统与Facade对象交互,让Facade与遗留代码交互所有复杂的工作。

  • 相关阅读:
    贴现值计算
    基于“淘宝”的六种质量属性场景描绘
    Maven 学习笔记1
    酷客机器学习十讲笔记10
    酷客机器学习十讲笔记9
    酷客机器学习十讲8
    酷客机器学习十讲笔记7
    酷客机器学习十讲笔记6
    酷客机器学习十讲笔记5
    前后端分离项目学习笔记
  • 原文地址:https://www.cnblogs.com/xuekyo/p/2588581.html
Copyright © 2020-2023  润新知