2007-12-25
adapter和facade模式区别
关键字: 设计模式 Adapter facade引用
我不是在设计模式上钻牛角尖,而是在写设计文档的时候对这两个模式的描述有点疑惑,区分概念是重要的,否则看文档的人很容易被误导。
写下这篇文章,做个记录,同时也让自己更明白。
写下这篇文章,做个记录,同时也让自己更明白。
adapter模式和Facade模式都是包装,用对象将遗留系统包装起来使其更容易使用。
但是他们是不同类型的包装:
[list=A]
有些人认为两个设计模式的另一个差异是:Facade隐藏了多了类,而Adapter只隐藏了一个类。这种说法经常是成立的,但不是模式本身的特点,将Facade置于一个非常复杂的对象之前,而将adapter来包装几个共同实现所需功能的小对象,也是不可能的。
结论:Facade模式简化了接口,而Adapter模式则将一个已有的接口转换成一个已有的接口。
- 21:59
- 浏览 (329)
- 评论 (2)
- 分类: Software Engineer
- 进入论坛
- 相关推荐
评论
dennis_zane
2007-12-26
adapter常常是为了保持多态,而facade不需要
SunMicro
2007-12-25
从动机出发,或许会更清晰一些
adapter是为了重用与期望接口不一致但的确可以被重用的代码。
简单打个比方比如一个客户端程序需要调用login方法执行登录认证,但其实已经有一个try_login接口被实现(adaptee)来执行这个过程,那么我就可以在login的实现中通过调用try_login的实现来重用代码。这个login的实现所属类就是一个adapter.
至于Facade模式,是为了减小模块间的耦合而在更高层次上定义的接口,通常提供以该模块较粗粒度的入口
adapter是为了重用与期望接口不一致但的确可以被重用的代码。
简单打个比方比如一个客户端程序需要调用login方法执行登录认证,但其实已经有一个try_login接口被实现(adaptee)来执行这个过程,那么我就可以在login的实现中通过调用try_login的实现来重用代码。这个login的实现所属类就是一个adapter.
至于Facade模式,是为了减小模块间的耦合而在更高层次上定义的接口,通常提供以该模块较粗粒度的入口
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 58999 次
- 性别:

- 来自: 乌托邦

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
基于web的项目管理,还需 ...
我要说楼主你这一套很不实用不符合XP精神
-- by Joo -
基于web的项目管理,还需 ...
我能想到的就是:再加一个maven的reporsitory服务器(如果项目中要使 ...
-- by pipilu -
【团队管理】大家Have A ...
你分配任务的时候有询问过他们的意见吗? 你在总结的时候有说个人的优点吗? ...
-- by alanwu -
基于web的项目管理,还需 ...
svn,ftp需要服务器,自己架的话还需要维护,麻烦 trac呢无法集成到我们的 ...
-- by xombat -
基于web的项目管理,还需 ...
汗你的团员会用你的工具工作么?怎么看也是手动svn,ftp,白板,纸条方便 一些 ...
-- by 抛出异常的爱






评论排行榜