论坛首页 Java企业应用论坛

adapter和facade模式区别

浏览 6335 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-25  
引用
我不是在设计模式上钻牛角尖,而是在写设计文档的时候对这两个模式的描述有点疑惑,区分概念是重要的,否则看文档的人很容易被误导。
写下这篇文章,做个记录,同时也让自己更明白。


adapter模式和Facade模式都是包装,用对象将遗留系统包装起来使其更容易使用。

但是他们是不同类型的包装:
[list=A]
  • 在Facade模式中,我们不需要按照某个接口设计,而adapter模式中则相反。
  • Facade模式的动机是简化接口,而在Adapter模式中,尽管也是越简单越好,但是设计必须遵循一个已有的接口,不能再简化任何东西。[/list]

  • 有些人认为两个设计模式的另一个差异是:Facade隐藏了多了类,而Adapter只隐藏了一个类。这种说法经常是成立的,但不是模式本身的特点,将Facade置于一个非常复杂的对象之前,而将adapter来包装几个共同实现所需功能的小对象,也是不可能的。

    结论:Facade模式简化了接口,而Adapter模式则将一个已有的接口转换成一个已有的接口。
       发表时间:2007-12-25  
    从动机出发,或许会更清晰一些
    adapter是为了重用与期望接口不一致但的确可以被重用的代码。
    简单打个比方比如一个客户端程序需要调用login方法执行登录认证,但其实已经有一个try_login接口被实现(adaptee)来执行这个过程,那么我就可以在login的实现中通过调用try_login的实现来重用代码。这个login的实现所属类就是一个adapter.
    至于Facade模式,是为了减小模块间的耦合而在更高层次上定义的接口,通常提供以该模块较粗粒度的入口
    0 请登录后投票
       发表时间:2007-12-26  
    adapter常常是为了保持多态,而facade不需要
    0 请登录后投票
    论坛首页 Java企业应用版

    跳转论坛:
    Global site tag (gtag.js) - Google Analytics