zoukankan      html  css  js  c++  java
  • 外观模式的简单使用

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

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

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


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


          

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

            试想,假设我们在角色和用例之间增加某个东西,专门用来处理他们之间的复杂关系。然后角色和用例之间仅仅有简单的关联关系。不就攻克了这个问题吗。

    看接下来的用例图。

         

        

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

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

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

        

         

            由类图可知。外观层就是对子系统的方法的封装,它把每一个过程须要使用的全部子系统的方法封装成了一个方法,然后由client调用。现实生活中有没有类似的样例呢?有!

    学校的一卡通事实上就是一个外观模式的应用。我们每一个学生每天须要去食堂买饭。去超市买东西,去澡堂洗澡。那么学生和学校的消费中心事实上就是多对多的关系,如今有了一卡通,它将我们全部的交易过程封装到了一起。我们仅仅须要使用一张卡就可以在不同的地方消费。结构图例如以下:

        

         一卡通的使用。为我们的生活带来了便利。

    如今假如学校不使用人民币了,使用美元来交易,那么我们不必亲自去银行换取美元使用,仅仅须要更改一卡通就可以。真是方便。可见,外观模式的使用,极大的减少了消费者和生产者之间的耦合度。

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

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


  • 相关阅读:
    ◆◆0[代码]基于动态内表的ALV
    SALV教程19-自定义按钮事件(EVENT)[added_function]
    创建list ALV tree[RS_TREE_LIST_DISPLAY]
    ◆◆0REUSE_ALV_GRID_DISPLAY_LVC-可编辑单元格
    ◆◆0SALV的一些限制和注意事项汇总
    ◆◆0SALV教程20-单元格可编辑
    REUSE_ALV_GRID_DISPLAY_LVC-双击事件’&IC1′
    ◆◆0REUSE_ALV_GRID_DISPLAY_LVC-行选择功能
    [代码]REUSE_ALV_GRID_DISPLAY_LVC-代码模板
    ◆◆0[问题解决]ALV可输入状态下输入金额/数量字段小数位数提前的问题
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6721503.html
Copyright © 2011-2022 走看看