处理不同活动的相同布局的最佳方法

时间:2017-05-15 07:01:21

标签: android design-patterns architecture

我一直在处理与 3种相关的帐户的应用程序。我们会根据您当前登录的帐户创建单一布局view/hide项目。

通过这种方法,我们activities/fragments 执行了很多不同的事情,它们处理包含在if/else检查等中的所有案例。随着项目的不断发展,它变得越来越难维持这些课程。

说,如果我必须在某些情况下隐藏视图,我必须查看许多 if/else检查只是为了隐藏单个按钮,因为如果我把它隐藏在一个地方,其他检查会让它再次可见,真的很难维护。

  

我期待专家们就此问题提供最好的建议。

5 个答案:

答案 0 :(得分:1)

如果您的单独应用程序需要进行少量自定义和主题更改,但实际上是相同的基本应用程序,那么多种口味绝对是您的选择。但是,如果两个应用程序都需要大量自定义代码差异,您可能需要重新考虑使用多种风格的策略。

另外,请注意flavor和build类型之间的区别。在Play商店中可能需要同一应用程序的不同版本的情况下使用flavor,例如free和pro,或者为多个客户端自定义同一应用程序的情况。

了解详情http://www.androidauthority.com/building-multiple-flavors-android-app-706436

答案 1 :(得分:1)

如果您在代码中分散了大量if / else,那么您可能应该在代码中使用多态。

为Activity创建一个抽象类,然后为每个特定类型对其进行专门化。

使用Factory方法模式创建此层次结构的对象。此方法将使用参数来决定实例化哪个具体类,然后它将初始化要返回的实例。

如果存在所有子类共有的算法但是包含应由每个类实现的一些打开步骤,请使用模板方法模式。

如果需要可在运行时修改的多态代码,请使用状态/策略模式。

答案 2 :(得分:0)

为相同的布局创建不同的xml并使用<include layout="@"/> 标记以创建布局,它将减少if / else并为您提供代码可重用性

答案 3 :(得分:0)

您已创建新的xml文件,其中包含您的活动和片段的公共视图,然后需要在xml中使用include标记,以便将这些常用视图添加到您的活动中。片段xml。

答案 4 :(得分:0)

我认为你应该为所有3种类型的帐户创建单独的布局,你可以创建PickLayout静态类/方法来按类型选择布局

int getLayout(int type){ return layoutMap.get(type); }

如果您有可重复使用的布局,那么您应该使用includemerge,或者也可以使用ViewStub

如果你有if / else链,那么你应该使用可以扩展,容易出错的Map link

并尝试关注android suggested design-pattern,这也有助于编写测试用例。