博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模式总结之结构型:代理模式 Vs 适配器模式 Vs 门面模式(外观模式)
阅读量:6241 次
发布时间:2019-06-22

本文共 1152 字,大约阅读时间需要 3 分钟。

  hot3.png

三哥们都是结构型模式,长得又有点像,为了深刻区分,写文祭奠一下。

先上UML图

代理模式:

适配器模式:

门面模式(外观模式):

打了例子……呃……举个比方

代理模式: 水浒街,西门庆看上潘金莲,想和她嘿咻嘿咻,但是自己有不能去找潘金莲去说,于是他找到了金牌代理人王婆,王婆就去找潘金莲,经过一番商谈,潘金莲终于答应了西门庆的请求。 

适配器模式: 水浒街,西门庆看上潘金莲,想和她嘿咻嘿咻,于是就去潘金莲家,但是潘金莲不在,于是就给王婆穿上潘金莲的衣服,带上面具,假扮成潘金莲,和西门庆嘿咻嘿咻了……(有点恶心啊) 

门面模式(外观模式): 水浒街,西门庆想去怡红院嘿咻嘿咻,于是他选好了姑娘,调好了门房,嘿咻之后交完了钱,由退了房。现在怡红院推出门面套餐,只要选门面套餐,就自动选好了最好的房子,最好的姑娘,连房租都可以自动记载账上,西门庆只要嘿咻就可以了。

优缺点

代理模式:优点是协调调用与被调用,实现部分解耦,代理模式能保护对真实对象的访问,代理远程机器可以使得远程机器能无阻碍协调地处理客服端请求。缺点是增加代理层调用流程复杂,可能出错,同时速度可能变慢。 用例子说明是:优点将西门庆与潘金莲隔离开来,保护了潘金莲的名声,同时使西门庆与潘金莲交流顺畅。缺点是多了王婆这一层,传达交流可能会出错,同时要肯定会延迟两人的交流。 

适配器模式:优点是将目标类与适配者类解耦,增加了类的透明性,灵活性扩展性好。缺点是在Java等语言中,不支持多继承,所以类适配器只能适配一个,而对象适配器想置换适配类的方法就不容易。 用例子来说:优点是西门庆知道那是王婆假扮的,而且他能随时让王婆假扮成其他人,灵活性好。缺点是在Java中,类适配器中王婆只能假扮一个姑娘,而对象适配器中王婆假扮的姑娘取乐方式只有嘿咻嘿咻。 

门面模式(外观模式):优点是松散耦合,被调模块更容易扩展和维护。简单易用,节省了调用者的处理流程,更好的划分了访问层次,而且用户不知道内部实现,还提高了安全性。缺点是不符合开闭原则,如果要新增功能,继承复用都没有用,只能修改门面模块代码。 用例子来说:优点是西门庆叫姑娘时简单容易,而且选姑娘、选房子、记账可以统筹规划,专门找人负责,各人之间互不相关,西门庆也不知道门面套餐内部机制,怡红院也挣钱也更隐蔽。缺点是有新的流程,都必须修改门面套餐。

适用范围

代理模式:可以用于远程访问,虚拟代理,以及权限控制,智过能引用代理等。 

适配器模式:当系统的数据与行为都正确,但是接口不符合是,可以通适配达到协调 

门面模式:开发时通过门面模式可以隐藏复杂的实现步骤,维护旧系统的时候,可以封装遗留代码,提供清晰借口。

转载于:https://my.oschina.net/markho/blog/498204

你可能感兴趣的文章
Web漏洞扫描
查看>>
使用xtrabackup做数据库的增量备份
查看>>
“程序已停止工作”问题的解决方法,停止解决方法
查看>>
[c++] 幂法求特征向量
查看>>
WEB项目(B/S系统)打包安装(总结篇)
查看>>
Cartographer源码阅读(8):imu_tracker
查看>>
U盘,移动硬盘显示显示需要格式化怎么修复
查看>>
JVM基础和调优(一)
查看>>
ICommand in Silverlight
查看>>
复选框、单选按钮、下拉列表的定义
查看>>
webdynpro的select_option示例
查看>>
img src 使用 base64 图片数据
查看>>
MapReduce计算每年最高温度
查看>>
Ruby快速入门
查看>>
UVA 12118 Inspector's Dilemma(连通性,欧拉路径,构造)
查看>>
一台电脑同时运行多个tomcat配置方法
查看>>
让文本框只能输入数字
查看>>
pwnable.kr 之 passcode write up
查看>>
多任务之协程浅谈
查看>>
Qt Creator快捷键
查看>>