• <八>阅读<<大话设计模式>>该模型的外观



            Facade模式其实很好理解,被表面的东西展示海报。内部的东西,你不知道(因为我们有一个好包)。例如,外部和公司内部制度,5交互系统,此5互。那么第一种就是外部系统和5个系统都进行交互;另外一种就是做一个接口将外部系统须要的逻辑封装成一个方法,该方法中包括了关于5个系统的交互方式,这样外部系统就不用直接和5个系统交互了,直接调用接口完事。外观模式也叫门面模式。事实上说白了就是把要用的东西封装起来使交互更加方便。

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

           <<大话设计模式>>在这章节中以买股票为故事情节展开的,说买股票须要学习非常多知识,一个不懂股票的人买会吃亏,所以不如买基金,基金是有职业经理人去操作,用外观模式来说的话,职业经理人就是门面,关于钱怎样进行投资自己不关心,自己关心的是挣钱了没有。

    差点儿相同理解了外观模式了。小二。该上代码了。

    1、系统1和2,就是client不关心与系统1、2交互

    public class SubSystemOne {

     

       public void method(){

          System.out.println("这是系统1");

       }

    }

    public class SubSystemTwo {

     

       public void method(){

          System.out.println("这是系统2");

       }

    }

    2外观类,将client要交互的系统逻辑封装

    public class Facade {

     

       SubSystemOne one;

       SubSystemTwo two;

      

       public Facade(){

          one = new SubSystemOne();

          two = new SubSystemTwo();

       }

       //要处理的逻辑,将外部系统与onetwo系统交互的逻辑放这里,外部系统就不用和onetwo交互了,直接与外观类交互

       public void method(){

          one.method();

          two.method();

       }

    }

    3、client

    public class FacadeClient {

     

       /**

        * @param args

        */

       public static void main(String[] args) {

          // TODO Auto-generatedmethod stub

     

          //直接与外观类交互,在此看不到onetwo系统

          Facade facade = new Facade();

          facade.method();

       }

     

    }

            看到client直接和门面类Façade交互就OK了,根本不知道系统1、2类的存在。这就是传说中的外观模式。没用过不知道,学习了感觉也就那样

    附上模式结构图


    总结:对于复杂难以维护的老系统,直接去改或去扩展都可能产生非常多的问题,那么我们假设去开法一个Façade与老系统的交互,那么以后直接开发新系统调用这个接口就能够了。这就是外观模式,一低调而美丽的人……

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    leetcode之Unique Binary Search Trees
    c++ 非常量引用产生临时对象
    redis的启动脚本
    leetcode 之 Insertion Sort List
    leetcode 之 Product of Array Except Self
    一致性hash的由来和原理
    我的vim 配置
    【原创】html页面清除浮动的几种方法
    实现本页面跳转的几种方式
    php输出语句用法总结
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4712811.html
Copyright © 2020-2023  润新知