Facade 模式

       近来刚接触到JAVA的Facade模式,这也是源于学习开源项目JpetStore.因为里面就有涉及这一模式.

起始对这个概念挺陌生,也查了网上的一些网友的见解,不过一般都是用class类来说明的,个人觉得

跟它原本定义有所出入.(也可能是我个人愚见),下面记录我学习这一模式后的认识.有错的地方请

大家指正.(因为我菜鸟都不算)

Facade的定义: 为子系统中的一组接口提供一个一致的界面.  (都这么定义的)

Facade模式中文又叫:外观模式,门面模式.

有高手是这么形容的:

假如你是顾客,你想买很多不同厂商生产的商品,你是不是自己亲自去跟每个厂商去买?这样够累的,现实中也

许没人这么干.于是就有了商店,超市,他们去和厂商联系购买,你只要和商店,超市这种门面打交道,不用管他东西

去哪买.这样超市,商店就是我们说的外观,门面.把一切操作都交给门面,外观去做.这样你就不用到处跑了.形容

很贴切.很佩服这些牛人..!

下面举个例子吧.

假如有三个接口,每个接口有自己定义的方法:

public interface A                                        

{                                                                   

    void testA();

      .........

}

public interface  B

{

   void testB();

.     .................

}

public interface C

{

    void testC();

}

接着:分别定义上面三个接口的实例,实现其中方法 ,这里就不说了。直接implements就OK了。

再接着定义一个门面,里面定义上面接口中所有方法

public interface Facade

{

    void  testA();

   void   testB();

   void  testC();

    ...........

}

然后定义一个Facade的实现

public class FacadeIpm implements Facade

{

  private A a;   private B b;   private C c;//通过spring容器注入实现A,B,C接口的实例。SET/GET方法略去。

   void testA(){   a.testA()   .....} //A的实现的方法

   void testB(){   b.testB().......}//B的实现的方法

   void testC(){   c.testC().......}//C的实现的方法

}

最后调用了;

调用就只要拿到FacadeIpm类的实现就可以分别调用A,B,C中 testA,testB,testC方法. 这样就实现了只和一个类打交道.FacadeImp实例调用testA()方法,实现的自然就是接口A中的方法。效果就达到了。

再看看这个模式的定义:Facade的定义: 为子系统中的一组接口提供一个一致的界面.  跟例子应该差不多吧。

可能有人会问,用一个类直接实现上面三个接口不就行了吗,干嘛还要多写个Facade接口.问这个就把我难住了,我想如果有很多个接口呢.这样写起来就非常不好看了.当然这种理解是很肤浅的.也是我没理解这模式的精髓所在.希望有高手告知.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值