gpt4 book ai didi

java - Android:修改此库的 'elegant' 方法是什么?

转载 作者:行者123 更新时间:2023-11-30 03:28:24 24 4
gpt4 key购买 nike

背景

我可以访问我用于录音/分析的库的源代码,并且需要为我的应用程序修改它。

有一个主要 Activity (A 类),我在其中设置 View 和内容。该库有一个类(B 类),它使用 Audio Recorder 处理来自麦克风的原始音频数据。该类的一个实例通过扩展 AsyncTask 的另一个类(C 类)作为任务运行,其中主要 Activity 有一个实例。

所以类 A 有一个类 C 的实例,类 C 有一个类 B 的实例,类 B 有我想从类 A 访问的原始数据。

为什么?

我想调用一个 Activity 来显示一个图表,其中包含在 B 类中找到的原始数据。

我尝试了什么

我在 B 类中添加了一个方法来获取原始数据并从 C 类中调用它。现在我可以在 C 类中创建一个类似的方法,以便 A 类可以从 C 类中获取原始数据。然而,这让我想吐。

另一种方法是从类 C 本身调用绘图 Activity ,但我觉得我正在添加不属于该类的逻辑。

我想要一个很好的方法来实现它,但没有设计模式背景,也没有太多常识。在这里真的很感激帮助。

/E

最佳答案

我认为正确的 OO 方法是,正如您所描述的那样:

  • 向类 B 添加方法 getRawData
  • 将方法 getRecordedAudio 添加到类 C

解释

虽然,它乍一看似乎很奇怪,但它是正确的面向对象的方式,因为这样您以后就可以使用该方法从任何其他类(比如 D 类)访问 B 类的原始数据) 而无需再次考虑额外的逻辑。

此外,您可能需要从另一个 Activity (例如 E)运行该异步任务 (C)。在这种情况下,您可以安全地重用 getRecordedAudio,而无需重新发明轮子。

最后的笔记

根据您对 API 的解释,这是我能想到的最佳方式。如果有任何其他限制,您需要告诉我们。

关于java - Android:修改此库的 'elegant' 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17861037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com