安卓适配器是适配器设计模式的一个例子吗



Android适配器使用适配器设计模式吗?GoF设计模式书将适配器设计模式描述为

适配器模式转换类的接口进入客户端期望的另一个接口。适配器插座因为不兼容的接口。

有一个适配器实现和客户端使用(期望)的目标接口,还有一个适配器将客户端发出的所有请求委托给的适配器。

我知道它的理论和现实世界中的模式适配器接口看起来并不完全像它,但我仍然不知道安卓适配器适应什么(什么目标接口),以及实际向哪个适配器发出请求。

我检查过这个,这个和这个。但他们都没有清楚地解释安卓适配器是如何成为适配器设计模式的。事实上,第一个和第二个答案有些矛盾。

有人能解释一下吗?

不,它们不是。当您需要在两种相似但不相同的类型之间转换接口时,会使用GoF适配器。最常见的情况是在两个库之间进行接口时,这两个库在编写时并没有考虑到彼此。例如,您可能使用一个返回Map的库,但您希望将结果传递给一个需要JSONObject的网络库。您可以使用Adapter模式来转换它(这是一个有点琐碎的例子,但您已经明白了)。

像ListView或RecyclerView这样的Android适配器不能做到这一点。相反,它从模型中获取数据并将其放入视图中。实际上,最接近MVP的是主持人。

世界上有很多类似于GoF的类与这些模式无关(例如,State这个词很少是State Machine的一部分)。特别是适配器,早在编写GoF之前就已经用于十几种用途。

Android适配器实际上与GoF的适配器设计模式相同。适配器用于为未知对象提供已知接口。例如:如果我们使用任何第三方库,建议实现适配器,以便将第三方接口转换为已知接口。然后,只需添加一个新的适配器就可以很容易地替换第三方库。

现在,从整体上看一下Android中的ListView适配器概念。如果第三方开发人员实现了已知的接口,即Android定义的适配器类型,那么他们可以自由添加任何数据后端并使列表视图工作。我希望这能澄清设计模式。

相关内容

最新更新