热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android日记之2012/02/09——浅谈设计模式facade

最近在看些设计模式facade的文章,也做个总结吧,如果说,写的不好,希望大家指正~~~谢谢~~~其实,感觉设计模式的东西比较难写,理论性比较强,就这么干巴巴的写理论,自己
       最近在看些设计模式facade的文章,也做个总结吧,如果说,写的不好,希望大家指正~~~谢谢~~~

       其实,感觉设计模式的东西比较难写,理论性比较强,就这么干巴巴的写理论,自己写的没意思,看的人也觉得没意思,但是要一下子写个Demo来具体说明一下,有感觉有点无从下手的感觉,也嫌写着麻烦。。。。。。就谈谈自己的理解吧。

       在说facade前,让我们先想想这样的场景。我们一般去医院看病的话,一般按照这样的步骤:1、挂号;2、去找医生;3、如果说病情不明的,还要去验个血;4、再回到医生那让医生对症下药;5、付款、取药。

       其实,我们整件事情做下来,无非是想知道自己得了什么病,该买什么药来治病,之间的找哪位医生啊,去验血啊,都不是我们想要关心的。那我们能不能这样,在医院里放个小机器人(可采血),我们滴一两滴血给小机器人,让它帮我们去挂号、验血、找医生、拿药过来,我们就只要在大厅里坐等小机器人过来,付款,拿药。这样下来,我们同样可以知道自己得了什么病,该买什么药来治病。但我们和医院的各个部门的接触就少了(程序中就是减少耦合),那这个小机器人,就是facade。

       Facade的理论介绍是这么写的:为子系统提供了一个更高层次、更简单的接口,从而降低了子系统的复杂度和依赖,这使得子系统更易于使用和管理。降低了子系统和客户的耦合度。

       对此,我们可以用一些项目来说明。最简单的,程序的前后台。用户通过访问程序的前台来获得数据,但是用户可以不用知道前台是如何和后台交互的。也就是说,用户得到了自己想要的数据,和程序至交互了一次。这就是运用了facade设计模式。如果不用呢?那用户就是把后台需要的方法一个一个调用过来,无疑就是增加了耦合度。而面向对象中就提到了高内聚、低耦合(这里就不扩展了,要不然就太庞大了。。。。。)。

       难道说facade设计模式就如此简单?非也,这只是举些大家都熟悉的例子而已。其实,难就难在我们如何在代码中把这种思想运用进去。我们可以把一个类看作是客户,它需要使用另外几个类来处理一个数据,那这几个类,我们就可以为它们写个接口,来作为他们的前台,那这个客户类就只需要与这个前台交互,就能得到所需要的数据。



推荐阅读
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 在工作了一年多后,我对现在的工作感到厌倦,没有激情,于是决定转行做程序猿。我在学校开了一个某宝店,通过自己摸索和努力,每个月挣够了零花钱和伙食费。我决定往互联网方向靠,不喜欢面对面和人沟通,而虚拟世界中的开发工作让我感到兴奋。我开始学习Java,感到困惑和怀疑自己的智商,但一篇鸡汤文激发了我学习Python的兴趣,我感到智商找回来了。我相信没有梦想的人和咸鱼没有什么区别。 ... [详细]
  • Python15行代码实现免费发送手机短信,推送消息「建议收藏」
    Python15行代码实现免费发 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • maya! board_3D角色模型很难做?Maya、Zbrush人头建模终极秘笈
    MAYA人头建模终极秘笈。教程可谓经典到掉渣。深入的从MAYA人头建模各个层面详尽的介绍了人头建模的方法和所有应当注意的细节。一、简介建立可信的人脸,是每一个三维艺术 ... [详细]
author-avatar
longfeiPHP
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有