浏览 6335 次
锁定老帖子 主题:adapter和facade模式区别
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-25
引用 我不是在设计模式上钻牛角尖,而是在写设计文档的时候对这两个模式的描述有点疑惑,区分概念是重要的,否则看文档的人很容易被误导。
写下这篇文章,做个记录,同时也让自己更明白。 adapter模式和Facade模式都是包装,用对象将遗留系统包装起来使其更容易使用。 但是他们是不同类型的包装: [list=A] 有些人认为两个设计模式的另一个差异是:Facade隐藏了多了类,而Adapter只隐藏了一个类。这种说法经常是成立的,但不是模式本身的特点,将Facade置于一个非常复杂的对象之前,而将adapter来包装几个共同实现所需功能的小对象,也是不可能的。 结论:Facade模式简化了接口,而Adapter模式则将一个已有的接口转换成一个已有的接口。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-12-25
从动机出发,或许会更清晰一些
adapter是为了重用与期望接口不一致但的确可以被重用的代码。 简单打个比方比如一个客户端程序需要调用login方法执行登录认证,但其实已经有一个try_login接口被实现(adaptee)来执行这个过程,那么我就可以在login的实现中通过调用try_login的实现来重用代码。这个login的实现所属类就是一个adapter. 至于Facade模式,是为了减小模块间的耦合而在更高层次上定义的接口,通常提供以该模块较粗粒度的入口 |
|
返回顶楼 | |
发表时间:2007-12-26
adapter常常是为了保持多态,而facade不需要
|
|
返回顶楼 | |