国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > <八>读<<大话设计模式>>之外观模式

<八>读<<大话设计模式>>之外观模式

来源:程序员人生   发布时间:2014-11-12 08:47:03 阅读次数:2412次


        外观模式其实很好理解的,就是将表面的东西展现给人看,内部的东西你不知道的(由于已封装好了),比如1个外部系统要和公司内部5个系统进行交互,而这5个系统之间也有交互,那末第1种就是外部系统和5个系统都进行交互;第2种就是做1个接口将外部系统需要的逻辑封装成1个方法,该方法中包括了关于5个系统的交互方式,这样外部系统就不用直接和5个系统交互了,直接调用接口完事。外观模式也叫门面模式,其实说白了就是把要用的东西封装起来使交互更加方便。

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

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

差不多理解了外观模式了,小2,该上代码了。

1、系统1和2,就是客户端不关心与系统1、2交互

public class SubSystemOne {

 

   public void method(){

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

   }

}

public class SubSystemTwo {

 

   public void method(){

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

   }

}

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

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、客户端

public class FacadeClient {

 

   /**

    * @param args

    */

   public static void main(String[] args) {

      // TODO Auto-generatedmethod stub

 

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

      Facade facade = new Facade();

      facade.method();

   }

 

}

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

附上模式结构图


总结:对复杂难以保护的老系统,直接去改或去扩大都可能产生很多的问题,那末我们如果去开法1个Fa?ade与老系统的交互,那末以后直接开发新系统调用这个接口就能够了,这就是外观模式,1个低调而又美丽的人……

 

 

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生