了解外观模式

2018-08-11  本文已影响4人  一条大狼狗

                  java 设计模式 ------外观模式


    Java中一共有23种设计模式,每种设计模式各有特点,我们主要来说一下外观模式。

当然,学习外观模式,首先应该了解一下,什么是外观模式?

外观模式:

      Facade模式,也叫做外观模式,是由GoF提出的23种设计模式中的一种,Facade模式为一

组具有类似功能的类群,比如说类库,子系统等,提供一个一致的简单的界面,这个一致的简

单界面就叫做Facade模式。这是从定义上说。.

  根据自己的语言,通俗点讲,也就是:

      有一组类,他们都具有类似的功能,我们会为这些类统一的提供一个简单的界面,来服务

客户端,这就叫做外观模式。也可以说是:为子系统中的一组接口提供一个一致的界面,此

模式定义了一个高层接口。这个接口使得这一子系统更加容易使用。

外观模式的核心:为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用。

接下来我们用代码来练一下:

  //1子系统

  public class System1 {

   /** 1子系统实现功能*/

      public void doSomething() {

      System.out.println("实现1子系统功能");

   }

}

   //2子系统

    public class System2 {

       /** 2子系统实现功能*/

       public void doSomething() {

      System.out.println("实现2子系统功能");

     }

}

    // 3子系统  

    public class SystemC {

       /** 3子系统实现功能*/

        public void doSomething() {

        System.out.println("实现3子系统功能");

     }

}

  其次我们新建一个给客户端体提供服务的简单界面类 

    Facade.java

   public class Facade {

            private System1 system1;

            private System2 system2;

            private System3 system3;

            public Facade() {

                  system1 = new System1();

                  system2 = new System2();

                   system3 = new System3();

           }

          public void do123() {

               this.system1.doSomething();

               this.system2.doSomething();

               this.system3.doSomething();}

         }

最后我们建立客户端类

MainClass.java

   public class MainClass {

          public static void main(String[] args) {

              Facade facade = new Facade();

              facade.do123();

       }

}

   从上面的代码我们可以知道,System1.java、System2.java、System3.java 具有相似的d

o123的功能的类。

而Facade可以统一的提供了一个服务客户端的do123的方法,可以看成是一个简单的界面。

接下来用图片来说明一下:

    可以利用的界面的效果说明这个问题:在一个界面中我们需要对界面的各个部分进行初

始化的操作,实现相似的功能,标题栏进行初始化返回键,初始化标题,初始化标题栏的背

景颜色等等。

     此种设计还是有一定的局限性,针对一些固有的操作很方便,比如经常做一些固定的

操作,可以使客户端和子系统进行隔离,但是如果我们要经常增加或者删除一些子系统

,这样我们还得对外观类进行更改,这还是违反了开闭原则。

上一篇下一篇

猜你喜欢

热点阅读