android适配器是适配器设计模式的一个例子吗?

android适配器是适配器设计模式的一个例子吗?,android,design-patterns,adapter,android-adapter,Android,Design Patterns,Adapter,Android Adapter,Android适配器是否使用适配器设计模式?GoF设计模式书将适配器设计模式描述为 适配器模式转换类的接口 进入客户期望的另一个接口。适配器let 课程在一起工作,这是因为 不兼容的接口 适配器实现了一个目标接口,客户机使用(期望)该接口,适配器将客户机发出的所有请求委托给一个适配器 我知道它的理论和现实世界中的模式适配器接口看起来并不完全像它,但我仍然无法弄清楚android适配器适应什么(什么目标接口)以及请求实际上是向哪个适配器发出的 我查过了,还有。但是,他们都没有清楚地解释androi

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

适配器模式转换类的接口 进入客户期望的另一个接口。适配器let 课程在一起工作,这是因为 不兼容的接口

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

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

我查过了,还有。但是,他们都没有清楚地解释android适配器是如何成为适配器设计模式的。事实上,答案和答案有些矛盾


谁能解释一下吗?

不,他们不是。当您需要在两种相似但不相同的类型之间转换接口时,将使用GoF适配器。最常见的情况是在两个库之间进行接口时,这两个库并没有考虑到彼此。例如,您可以使用一个返回映射的库,但您希望将该结果传递到一个需要JSONObject的网络库中。您可以使用适配器模式对其进行转换(这是一个有点小的示例,但您明白了)

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


世界上有很多类似于GoF的类与这些模式无关(例如,State这个词很少是状态机的一部分)。在编写GoF之前很久,适配器就被用于很多用途

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

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

同意你的观点。这个链接还提到了recyclerview适配器作为适配器设计模式:那么这个答案呢@Gabeschen然后如何解释任何数据列表(将其视为第一个接口)转换为视图列表(将其视为第二个接口)?对你来说,它不是一个适配器吗?@Sergey不是。因为适配器模式与转换数据无关。它是关于在不同系统之间转换接口的。类似地,将格式为“1234”的字符串转换为int 1234的代码也不是适配器。因为适配器的核心不是转换数据格式,我不是说转换数据,我提到了转换接口。例如,RecyclerView不能直接使用我们的自定义接口,但它提供了自己的接口(适配器)来将我们的接口转换为RecyclerView可以使用的接口。我同意您的观点,我们让自己的类实现已知接口,而客户机使用我们类的对象,但我认为它的主要用途与GoF适配器模式略有不同。因为GoF适配器模式用于将一个接口转换为另一个接口。但是,另一方面,在android适配器中,我们通常不在适配器中组合任何其他接口并委托函数调用。