外观模式的简单使用

       外观模式是什么?为什么要使用外观模式?使用外观模式有什么好处?外观模式有什么特点?本篇博客就外观模式的原理以及最近的使用心得做个总结。

         通俗的讲,外观模式就是给系统的一组接口提供一个统一的界面,它定义了一个接口,这个接口使得这个子系统更加容易使用。

         为什么使用外观模式?那我最近的例子来讨论一下。来个包图说明一下系统层次结构。


    可以清楚的看到,在U层和B层之间加了一个外观层,如果不加这层,会发生什么情况呢?我简单的画了个用例图来说明两层之间的调用关系。


      

    由图片可以看出来,角色和用例之间关系过于复杂,如果需要修改一个用例,那么两个角色都需要修改,这在程序设计中是不予许的。怎么避免这种情况呢?这就是文章需要讨论的内容了--外观模式。

        试想,如果我们在角色和用例之间加入某个东西,专门用来处理他们之间的复杂关系,然后角色和用例之间只有简单的关联关系,不就解决了这个问题吗。看接下来的用例图。

     

    

    实际类图不是这样的,为了便于理解,类图简化成了用例图,此图没有实际意义,仅供参考。

       可见,加了外观层以后,角色和用例之间没有直接联系,它们之间的耦合度降低了,系统维护都是在外观层进行,可维护性也提高了。

         下面是外观层的类图结构:

    

     

        由类图可知,外观层就是对子系统的方法的封装,它把每个过程需要使用的所有子系统的方法封装成了一个方法,然后由客户端调用。现实生活中有没有类似的例子呢?有!学校的一卡通其实就是一个外观模式的应用。我们每个学生每天需要去食堂买饭,去超市买东西,去澡堂洗澡,那么学生和学校的消费中心其实就是多对多的关系,现在有了一卡通,它将我们所有的交易过程封装到了一起,我们只需要使用一张卡即可在不同的地方消费。结构图如下:

    

     一卡通的使用,为我们的生活带来了便利。现在假如学校不使用人民币了,使用美元来交易,那么我们不必亲自去银行换取美元使用,只需要更改一卡通即可,真是方便。可见,外观模式的使用,极大的降低了消费者和生产者之间的耦合度。

    外观模式的适用范围:软件设计初期阶段,应该要有意识的将不同的两个层分离开,不同的层之间就可以建立外观层,可以使得层之间的耦合度大大降低,增加系统的可维护性。在开发阶段,如果子系统越来越复杂,我们可以使用外观来提供一个简单的接口,减少他们之间的依赖。在维护阶段,我们可以开发一个外观层接口,我们只需要使用外观层接口与新系统交互即可,可以减少很多不必要的麻烦。

    总结:外观模式向外界提供了一个统一的接口,这一接口使得子系统更加容易使用。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值