外观模式

Posted 苏子轩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了外观模式相关的知识,希望对你有一定的参考价值。

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

哪些情况使用此模式:

1,设计初期阶段,应该有意识的将不同的两个层分离。层与层之间建立外观模式,降低耦合度。

2,开发阶段,子系统往往变的越来越复杂,大多数模式的使用会产生很多很小的类,增加外观Facade,可以提供一个简单的接口,减少它们之间的依赖。

3,在维护一个遗留的大型系统时,可能系统已经很难维护和扩展,但是它又很重要,新系统要依赖它。那么为新系统开发一个Facade,来提供简单清晰的接口,让新系统和Facade对象交互,Facade与旧代码交互所有复杂工作。

 

假设存在系统1和2,客户端不关心与系统1、2交互

(代码地址:http://blog.csdn.net/jzhf2012/article/details/40652771)

 

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();

   }

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

   public void method(){

      one.method();

      two.method();

   }

}

3、客户端

public class FacadeClient {

 

   /**

    * @param args

    */

   public static void main(String[] args) {

      // TODO Auto-generatedmethod stub

 

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

      Facade facade = new Facade();

      facade.method();

   }

 

}

以上是关于外观模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式整理_外观模式

外观模式(Facade Pattern)

外观模式及php实现

设计模式——外观模式

设计模式--12外观模式

“Head First 设计模式“ :外观模式