结构型:代理模式 Vs 适配器模式 Vs 门面模式(外观模式)

先上UML图

代理模式:

结构型:代理模式 Vs 适配器模式 Vs 门面模式(外观模式)

适配器模式:

结构型:代理模式 Vs 适配器模式 Vs 门面模式(外观模式)

门面模式(外观模式):

结构型:代理模式 Vs 适配器模式 Vs 门面模式(外观模式)

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

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

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

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

优缺点

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

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

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

适用范围

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

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

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

上一篇:非对称加密算法--DH


下一篇:KBEngine WebConsole Guide