【问题标题】:How Does Adapter Pattern Work?适配器模式如何工作?
【发布时间】:2013-11-12 13:15:52
【问题描述】:

我最近在我的学期课程中读到了适配器模式。我已经理解了提供通用接口的概念,以便第三方 API 可以在我们的系统中工作。

但是它在编码中是如何工作的,假设我有两个第三方 SDK,例如:

A(String name)

A1(String Firstname,String Lastname)

现在我生成了称为IAAdapater 的通用接口。现在在其中编写代码,现在我的问题是,如何通过IAAdapater 调用A(String name)A1(String Firstname,String Lastname)

如果我错了,请纠正我!

【问题讨论】:

    标签: design-patterns adapter


    【解决方案1】:

    编辑我认为另一个答案更接近您正在寻找的 - 我实际上在这里描述了一个门面。

    您的 IAAdapter 需要公开方法 A(String name) 和 A1(String Firstname, String Lastname)

    然后您需要一个委托给底层对象的接口的实现。

    IAAdaptor{
    A(string name);
    A1(string firstname, string lastnae);
    }
    
    Adaptor:IAAdaptor{
    A(string name){}
    A1(string firstname, string lastnae){}
    }
    

    【讨论】:

      【解决方案2】:
      interface IAAdapater {
        A(firstname, lastname)
      }
      
      // Adapter for A SDK
      A_adapter implements IAAdapter {
        A(firstname, lastname) {
          call A(firstname + ' ' + lastname)
        }
      }
      
      // Adapter for A1 SDK
      A1_adapter implements IAAdapter {
        A(firstname, lastname) {
          call A1(firstname, lastname)
        }
      }
      

      现在您只需要担心一个 API:名字、姓氏。其余的适配器将由不同的适配器处理。

      call A_adapter.A('will', 'smith');
      call A1_adapter.A('will', 'smith');
      

      如果我误解了这个问题,请告诉我。

      【讨论】:

      • 你说得对,但是,现在A(String name) 将如何处理?因为现在你已经为lastnamefirstname 创建了一个适配器,A 只有一个东西叫String name.. 我有点困惑!
      • 不,我已经为 A 和 A1 创建了一个适配器。 A_adapter 使用代码firstname + ' ' + lastname 处理string name,请参见代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多