看上去很美:外观模式

简介:

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

代码部分:

Code




本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2009/03/28/1420753.html,如需转载请自行联系原作者

目录
相关文章
|
9月前
|
机器学习/深度学习 存储 人工智能
【科普向】模型蒸馏和模型量化到底是什么???
在数字化快速发展的时代,人工智能(AI)技术已广泛应用,但大型深度学习模型对计算资源的需求日益增长,增加了部署成本并限制了其在资源有限环境下的应用。为此,研究人员提出了模型蒸馏和模型量化两种关键技术。 模型蒸馏通过将大型教师模型的知识传递给小型学生模型,利用软标签指导训练,使学生模型在保持较高准确性的同时显著减少计算需求,特别适用于移动设备和嵌入式系统。 模型量化则是通过降低模型权重的精度(如从32位浮点数到8位整数),大幅减少模型大小和计算量,提高运行速度,并能更好地适应低配置设备。量化分为后训练量化和量化感知训练等多种方法,各有优劣。
|
网络协议 安全 容灾
哪些 DNS 服务器的响应速度快且稳定可靠?
哪些 DNS 服务器的响应速度快且稳定可靠?
17181 4
|
运维 Linux Docker
Docker Hub 镜像拉取超时:1Panel面板中应用安装失败的临时解决方案
`1Panel` 是一款Linux服务器管理面板,提供图形化界面便于运维。若在安装应用时遇到问题,可以尝试使用Docker加速地址 <https://docker.1panel.live/>,但请注意该地址可能不稳定且仅限境内使用。首届 `1Panel` 运维节将在2024年7月24日举行,更多信息可访问官方链接。
6136 2
Docker Hub 镜像拉取超时:1Panel面板中应用安装失败的临时解决方案
|
自然语言处理 架构师 测试技术
如何画好一张架构图?
架构图是什么?为什么要画架构图?如何画?有哪些方法?本文从架构的定义说起,分享阿里文娱高级技术专家箫逸关于画架构图多年的经验总结,并对抽象这一概念进行了深入地讨论。较长,同学们可收藏后再看。
4625 0
如何画好一张架构图?
|
数据采集 前端开发 搜索推荐
埋点tracker:前端数据埋点-方案设计思路梳理
埋点tracker:前端数据埋点-方案设计思路梳理
2898 0
|
存储 安全 算法
智能终端信息安全概念(五):硬件安全技术—加密芯片
智能终端信息安全概念(五):硬件安全技术—加密芯片
404 0
|
网络协议 数据安全/隐私保护 网络架构
通俗科普:网关是什么?
通俗科普:网关是什么?
9257 0
Python进阶语法之三元表达式详解
Python进阶语法之三元表达式详解