外观模式用于为复杂系统创建一个简单清晰的接口。

当我们需要使用到子系统的代码时,为了避免过去深入地调用子系统代码而导致后期代码难以维护,减低代码和子系统的耦合性,我们需要在代码和子系统中引入一个入口。实际上就是在子系统代码进行一次封装,那么我们在调用子系统代码的时候就可以通过调用封装的方法来调用,以致于后期修改子系统代码时不会对我们的代码有很大的影响。

下面通过一个例子来简单演示一下外观模式。
假设我们原先有一些方法,用这些方法可以完成向一个好友发送hello,

//寻找目标好友

function searchFriend($name){echo "寻找目标好友:$name";
}
//打开聊天窗口
function openWindow($name){  echo "打开$name的聊天窗口";
};
//发送hello
function sayHello(){echo "sayhello";
}

当我们每次想要找好友say hello的时候,都要调用这一系列方法,如果后期系统升级或者代码修改,都需要修改我们调用这些代码的地方,如果你的代码已经遍布了子系统代码,那么这样的维护升级的工作量将是巨大的。为了避免这种情况,我们使用外观模式来解决这个问题:

class chatFacade{private $name;public function __construct($friend){ $this->name=$friend;}public function chat(){searchFriend($this->name);openWindow($this->name);sayHello();}
}

在使用的时候,现在我们只需:

$obj=new chatFacade('manyhong');
$obj->chat();

为复杂系统创建简单接口的好处是明显的,但是另一方面你可能会过度抽象系统。如果想要使客户端访问代码变得简介或者想把系统中的修改对客户端代码隐藏,使用外观模式吧。

外观模式——透过现象看本质相关推荐

  1. 传统金融PK互联网 必须透过现象看本质

    传统金融PK互联网 必须透过现象看本质 面对越来越热的互联网金融,传统金融业内人士与互联网的发生激烈了冲突,中国近期的经济疲软似乎也变成了互联网金融的原罪之一,但事实真是如此吗? width=&quo ...

  2. 软件架构设计案例_透过现象看本质:常见的前端架构风格和案例

    所谓软件架构风格,是指描述某个特定应用领域中系统组织方式的惯用模式.架构风格定义一个词汇表和一组约束,词汇表中包含一些组件及连接器,约束则指出系统如何将构建和连接器组合起来.软件架构风格反映了领域中众 ...

  3. 透过现象看本质:喧闹的中国电子商务

    吴军先生做<透过现象看本质:喧闹的中国电子商务>主题演讲,剖析中国电子商务行业的现状和格局,预测未来行业趋势,并针对传统企业.中小企业的具体情况,给出一些策略上的建议. 以下是吴军先生的现 ...

  4. 透过现象看本质 | GPT爆火的背后

    前言: 近年来,GPT(Generative Pre-trained Transformer)作为一种革命性的语言模型,以其强大的文本生成能力和广泛的应用领域引发了全球范围内的热议.然而,GPT爆火的 ...

  5. 透过现象看本质: 常见的前端架构风格和案例

    所谓软件架构风格,是指描述某个特定应用领域中系统组织方式的惯用模式.架构风格定义一个词汇表和一组约束,词汇表中包含一些组件及连接器,约束则指出系统如何将构建和连接器组合起来.软件架构风格反映了领域中众 ...

  6. 透过现象看本质,如何针对用户做好需求分析

    对于刚入门的产品经理而言,很容易出现设计出来的产品功能不达用户预期的情况.这里面一部分原因是由于需求分析没做到位,忽略了事情背后的本质.那么下面我们看看如何做好需求分析. 透过现象看本质 我们只有透过 ...

  7. 大道至简之四:透过现象看本质

    大道至简:透过现象看本质 --投资总结之四         时寒冰 研究趋势是一件充满挑战和趣味的事情.     我深信,很多现象是有规律可循的.     但是,对于趋势的判断尤其提前做出的判断,短期 ...

  8. 大道至简:透过现象看本质

    大道至简:透过现象看本质 --投资总结之四         时寒冰 研究趋势是一件充满挑战和趣味的事情.     我深信,很多现象是有规律可循的.     但是,对于趋势的判断尤其提前做出的判断,短期 ...

  9. 黄金思维圈,养成透过现象看本质的能力

    loonggg 读完需要 3 分钟 速读仅需 1 分钟 大家好,我是你们的校长. 今天我想给大家聊一聊关于思考,关于黄金思维圈的问题.如果你有了黄金思维圈的思维,带着目的去做一件事情,不仅仅会养成透过 ...

最新文章

  1. 在C#中使用SerialPort类实现串口通信
  2. matlab mapminmax 基于神经网络的网格训练
  3. 微博php-sdk使用教程,腾讯微博api(php-sdk)的使用
  4. python之tkinter图形界面
  5. vue2.0父向子传参,子向父传参,路由传参
  6. mysql 钩子_面试官: 什么是 Hook (钩子) 线程以及应用场景?
  7. linux文件比较,合并,查找重复行
  8. etcher制作mac启动盘_如何在Mac上创建和引导Linux USB驱动器
  9. 使用mysql事务管理_MySQL事务管理的介绍(附示例)
  10. NYOJ题目79-拦截导弹(最长递减子序列)
  11. w3wp.exe进程资源占用过大问题
  12. Linux 的camera sensor 驱动代码分析:基于rv1108
  13. 重装系统后Oracle数据库恢复的方法
  14. 金山也推隐私保护器,我的隐私谁做主?
  15. 打印文件提示服务器错误,要打印文件时,总是出现打印错误,上班族的你快来看看吧!...
  16. FineReport的数据库
  17. poi替换word内容
  18. 微型计算机集成化,微型计算机的什么集成在微处理器芯片上
  19. Java实现复数的加减乘除
  20. 大学生求职的互联网“围城”:被神化的“大厂梦”

热门文章

  1. Sedona NetFusion 在OIF/ONF T-API 互通测试中扮演关键角色
  2. Windows 应用商店无法打开解决办法
  3. 妖魔复苏:天师下山!开局传承天师度(二)
  4. [POJ1187] 陨石的秘密
  5. Auto CAD2004完全笔记
  6. H5+CSS+JavaScript入门学习
  7. 【图像增强】Frangi滤波器血管图像增强【含Matlab源码 2108期】
  8. Python爬取猫眼电影榜单评分,以及评论
  9. layui个人中心html,Layui的简易入门教程
  10. react-native Animated简单动画制作