希望将Google地图活动类重构为更易于维护的内容。
目前它实现了以下接口:
LocationListener
,GoogleApiClient.ConnectionCallbacks
,GoogleApiClient.OnConnectionFailedListener
,AdapterView.OnItemClickListener
除此之外,它还包含许多辅助方法。
我有几个问题与最佳方法有关。
我应该创建静态助手类并将我的侦听器实现留在Activity类中吗?
我应该创建帮助类并创建它们的实例,将所需的一切传递给它们的构造函数吗?例如上下文。
我应该抽象我的Activity类并分别在它自己的类中实现每个监听器吗?
提前致谢。在我的技术债务进一步增加之前,我想遵循某种Android / Java标准。
答案 0 :(得分:1)
答案取决于您打算如何在应用中使用Activity
。
我应该创建静态助手类并将我的侦听器实现留在Activity类中吗?
回答:如果您打算仅在应用中的一个位置使用Activity
,并且不需要在应用的不同部分重复使用该活动,则此方法会很有效。原因是您必须使辅助函数非常灵活(许多情况下)能够重用具有相同Activity
的那些函数,但是在不同的情况和场景中。有关此内容,请参阅选项3.
我应该创建帮助类并创建它们的实例,将所需的一切传递给它们的构造函数吗?例如上下文。
回答:这可能是更复杂的路线,但在地图中启用/禁用功能方面会给您最大的灵活性。让我们假设您希望地图只有两件事。您可以创建一个新的Activity
并调用2个辅助函数,将这两个特征添加到地图中。在应用程序的另一部分中,您可以调用更多辅助函数调用来添加更多功能。这也可以使您的地图使用最统一,因为所有功能都添加了完全相同的辅助函数调用。
我应该抽象我的Activity
类并分别在自己的类中实现每个监听器吗?
答案:如果您打算在app的不同部分重复使用完全相同的活动,则应使用此方法。我们假设您要在“关于”中显示地图。部分和应用程序的各个部分。显示的所有地图将具有完全相同的功能,并且将以完全相同的方式工作。 (为了增加更多的灵活性,您应该创建一个Abstract Fragment
并实现所有侦听器。这样,您只需添加Fragment
即可轻松地在应用的任何部分重复使用Fragment
。)
我个人会对选项2和3进行组合,因为这样你就可以在应用程序的任何地方添加Fragments
,无论你希望实现哪种功能。