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