zoukankan      html  css  js  c++  java
  • 看上去很美:外观模式

    在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。举例来说,比如利用传统的三层结构,我们开发了一个客户订单管理系统,数据库表包括主要客户表,订单表,产品表。在该应用程序中,有部分操作只是简单的从数据库根据条件提取数据,不需要经过任何处理,而直接将数据显示到网页上,比如客户登陆显示等级和积分。而另外一些操作,比如客户预定定单中计算购买产品的总价并根据顾客的级别计算回扣,积分和等级之间的相互转换(等级按照积分的变化而变化)等等,这部分往往有许多不同的功能的类,操作起来也比较复杂。如果采用传统的三层结构,这些逻辑一般是会放在中间层,那么对内部的这些大量种类繁多,使用方法也各异的不同的类的调用任务,就完全落到了表示层。这样势必会增加表示层的代码量,将表示层的任务复杂化,和表示层只负责接受用户的输入并返回结果的任务不太相称,并增加了层与层之间的耦合程度。
    那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?
    于是就引入了一个Facade层,让这个Facade来负责管理系统内部类的调用,并为表示层提供了一个单一而简单的接口。好了,Code is cheap.看代码了先。
    类图:

    代码部分:

    Code


    作者:Jeff Wong
    出处:http://jeffwongishandsome.cnblogs.com/
    本文版权归作者和博客园共有,欢迎围观转载。转载时请您务必在文章明显位置给出原文链接,谢谢您的合作。

  • 相关阅读:
    Pycharm Debug调试心得
    看了一些东西,发现一些用css实现一些东西的小技巧就记录下来
    使用js创建10*10方块
    用JS获取窗口和元素的大小
    jQuery笔记
    DOM学习中的小笔记
    常用的sql语句
    C#比较两个字符串的相似度【转】
    .net Core学习笔记之MemoryCache
    初学nodejs之安装Express中遇到的问题: error: option `-v, --view <engine>' argument missing
  • 原文地址:https://www.cnblogs.com/jeffwongishandsome/p/1420753.html
Copyright © 2011-2022 走看看