Android适配器是否使用适配器设计模式? GoF设计模式书将适配器设计模式描述为
适配器模式转换类的接口 进入客户期望的另一个界面。适配器让 课程一起工作,否则因为 不兼容的接口。
有一个目标接口,适配器实现,客户端使用(期望),并且有一个适配器,适配器委托客户端发出的所有请求。
据我所知,它的理论和现实世界模式适配器接口看起来并不完全一样,但我仍然无法弄清楚android适配器适应什么(什么是目标接口)以及哪些适配器是实际发出的请求
我已检查this,this和this。但是他们都没有解释清楚Android适配器是如何适配器设计模式的。事实上,1st和2nd答案有些矛盾。
有人可以解释一下吗?
答案 0 :(得分:13)
不,他们不是。当您需要在两个相似但不相同的类型之间转换接口时,使用GoF适配器。最常见的情况是两个库之间的接口,这两个库之间没有相互编写。例如,您可以使用返回Map的库,但是您希望将该结果传递给需要JSONObject的网络库。您可以使用适配器模式来转换它(这是一个简单的例子,但你明白了。)
像ListView或RecyclerView这样的Android适配器并不能做到这一点。相反,它从模型中获取数据并将其放入View中。真正最接近的是MVP演示者。
世界上有许多类似于GoF的类与这些模式无关(例如,State一词很少是State Machine的一部分)。特别是适配器在GoF编写之前很久就被用于了十几个目的。
答案 1 :(得分:1)
Android适配器实际上是与GoF相同的适配器设计模式。 适配器用于为未知对象提供已知接口。 例如:如果我们使用任何第三方库,建议实施适配器,以便将第三方接口转换为已知接口。 然后只需添加一个新适配器就可以轻松替换3rp方库。
现在,请查看Android中的ListView Adapter概念。 第三方开发人员可以自由添加任何数据后端,如果他们实现了Android定义的适配器类型的已知接口,则使列表视图工作。我希望澄清设计模式。