Android 多风格应用程序的设计帮助
我正在开发一款针对特定业务合作伙伴而非消费者的应用程序。起初,我们有一个主要的代码库,每个客户都有很多不同的风格,只是在一些琐碎的事情上,比如资源上(比如为每个客户定义不同的主颜色和徽标) 然而,随着时间的推移,不同的客户机需要不同的逻辑,我们必须适应,因此我们将较小的代码块分解成一个“默认行为”类,该类在每个味道上都有一个扩展它的类,因此我们可以对每个味道进行较小的更改 问题是,随着时间的推移,基本行为类已经变成了一个怪物,重构可能会打破一种或另一种风格(大约有30种) 所以基本上我的问题是:Android 多风格应用程序的设计帮助,android,oop,Android,Oop,我正在开发一款针对特定业务合作伙伴而非消费者的应用程序。起初,我们有一个主要的代码库,每个客户都有很多不同的风格,只是在一些琐碎的事情上,比如资源上(比如为每个客户定义不同的主颜色和徽标) 然而,随着时间的推移,不同的客户机需要不同的逻辑,我们必须适应,因此我们将较小的代码块分解成一个“默认行为”类,该类在每个味道上都有一个扩展它的类,因此我们可以对每个味道进行较小的更改 问题是,随着时间的推移,基本行为类已经变成了一个怪物,重构可能会打破一种或另一种风格(大约有30种) 所以基本上我的问题是:
有谁能想到一个设计解决方案,可以扩展以帮助管理一个应用程序,该应用程序的多种风格在UI和逻辑上日益不同,代码重复最少,易于维护?您可以使用
BuildConfig
类。这是gradle每次构建应用程序时创建的静态类,可以在应用程序中访问
您这样声明它们:
android {
productFlavors {
flavorX {
buildConfigField("String", "Flavor", "\"flavorX\"")
}
}
}
然后在代码中,您只需使用
String flavor = BuildConfig.Flavor;
if(flavor.equals("flavorX")){
//do stuff
}
BuildConfig
是一个静态类,因此这将允许您在需要的地方进行风格区分,而不仅仅是在一个替换的类中。在您的情况下,这似乎更有效,更易于维护。我们已经依赖BuildConfig类来处理各种需要按味道替换的常量,但是这对于设计来说不是一个好的选择,因为代码中只会填充大量的if/else if语句,从而使主代码baseSure膨胀,但它仍然比用30种口味来代替课堂要好。如果您保持代码干净,并且所有程序员都知道这种方法,那么这个解决方案工作得非常好:-)此外,值得编写一些Util类,如volvoutil.java,使用isvolvorX()、isPinkFlavor()等方法,因此所有的equals逻辑和常量都保存在一个位置:-)