gpt4 book ai didi

java - 在 Android 中子类化 Activity 时,是否有一种设计模式可以减少代码重复?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:59:46 25 4
gpt4 key购买 nike

我在一些 Activity 中有一个常见的任务 - 下载数据然后显示它。我把下载部分弄下来了;当然,由于用户可能会在下载完成之前更改方向或取消 Activity,因此有点棘手,但代码就在那里。有足够的代码处理这些情况,因此我不想将它复制/粘贴到我拥有的每个 Activity,所以我想创建一个抽象子类 Activity 本身,以便它处理单个后台下载,然后启动一个方法用数据填充页面。

这一切都有效。问题是,由于单一继承,我不得不为任何其他类型的 Activity 重新创建完全相同的类——例如,我使用 Activity、ListActivity 和 MapActivity。要对所有三个使用相同的技术,需要三个重复的类,除了每个扩展不同的 Activity。

有没有一种设计模式可以减少代码重复?就目前而言,我已经避免了很多重复,但让我痛苦的是看到三个类中的完全相同的代码只是为了让它们各自子类化不同类型的 Activity。

编辑:因为看起来我需要更具体一点......

假设我正在尝试解决方向更改期间 AsyncTask 后台下载的问题。我现在的解决方案是使用回调;我有一个下载管理器来启动这些下载,然后我让 Activity 附加一个回调到它。当方向改变时,Activity 被销毁然后重新创建;在此过程中,我分离旧 Activity 的回调,然后从新 Activity 附加一个新回调。

方向更改是一个常见问题,在多个 Activity 中,我在加载数据时使用进度 View 启动 Activity 。我要解决的问题是不必重复十次重新实现这种方向处理逻辑;我最初的解决方案是将 Activity 子类化,但后来我遇到了上述问题。

最佳答案

Prefer composition over inheritance .无论是常见的,都委托(delegate)给一些可以成为 Activity、ListActivity 和 MapActivity 成员的类。

关于java - 在 Android 中子类化 Activity 时,是否有一种设计模式可以减少代码重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2587186/

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