Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 适配器模式是如何工作的?_Design Patterns_Adapter - Fatal编程技术网

Design patterns 适配器模式是如何工作的?

Design patterns 适配器模式是如何工作的?,design-patterns,adapter,Design Patterns,Adapter,我最近在学期课程中读到了关于适配器模式的内容。我已经理解了提供公共接口的概念,以便第三方API可以在我们的系统中工作 但是它在编码中是如何工作的,假设我有两个第三方SDK,例如: A(String name) A1(String Firstname,String Lastname) 现在我生成了一个公共接口,称为,IAAdapater。现在我的问题是,如何通过IAAdapater调用A(字符串名)或A1(字符串名,字符串名) 如果我错了,请纠正我 interface IAAdapater {

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

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

A(String name)

A1(String Firstname,String Lastname)
现在我生成了一个公共接口,称为,
IAAdapater
。现在我的问题是,如何通过
IAAdapater
调用
A(字符串名)
A1(字符串名,字符串名)

如果我错了,请纠正我

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:firstname,lastname。不同的适配器将处理其余部分

call A_adapter.A('will', 'smith');
call A1_adapter.A('will', 'smith');
如果我误解了这个问题,请告诉我

现在您只需要担心一个API:firstname,lastname。不同的适配器将处理其余部分

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

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

编辑我认为另一个答案更接近您所寻找的答案-我实际上在这里描述了一个外观

IAAdapter需要公开方法A(字符串名)和A1(字符串名、字符串名)

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

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

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

编辑我认为另一个答案更接近你想要的——我实际上在这里描述了一个门面

IAAdapter需要公开方法A(字符串名)和A1(字符串名、字符串名)

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

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

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

您的回答正确,但是现在
A(字符串名称)
将如何处理?因为现在您已经为
lastname
firstname
创建了一个适配器,所以A只有一个东西叫做
String name
。。我有点糊涂了!不,我已经为A和A1创建了一个适配器。适配器使用代码
firstname+''+lastname
处理
string name
,请参阅代码。您的回答正确,但现在
A(string name)
将如何处理?因为现在您已经为
lastname
firstname
创建了一个适配器,所以A只有一个东西叫做
String name
。。我有点糊涂了!不,我已经为A和A1创建了一个适配器。适配器使用代码
firstname+''+lastname
处理
字符串名
,请参阅代码。