Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 多风格应用程序的设计帮助_Android_Oop - Fatal编程技术网

Android 多风格应用程序的设计帮助

Android 多风格应用程序的设计帮助,android,oop,Android,Oop,我正在开发一款针对特定业务合作伙伴而非消费者的应用程序。起初,我们有一个主要的代码库,每个客户都有很多不同的风格,只是在一些琐碎的事情上,比如资源上(比如为每个客户定义不同的主颜色和徽标) 然而,随着时间的推移,不同的客户机需要不同的逻辑,我们必须适应,因此我们将较小的代码块分解成一个“默认行为”类,该类在每个味道上都有一个扩展它的类,因此我们可以对每个味道进行较小的更改 问题是,随着时间的推移,基本行为类已经变成了一个怪物,重构可能会打破一种或另一种风格(大约有30种) 所以基本上我的问题是:

我正在开发一款针对特定业务合作伙伴而非消费者的应用程序。起初,我们有一个主要的代码库,每个客户都有很多不同的风格,只是在一些琐碎的事情上,比如资源上(比如为每个客户定义不同的主颜色和徽标)

然而,随着时间的推移,不同的客户机需要不同的逻辑,我们必须适应,因此我们将较小的代码块分解成一个“默认行为”类,该类在每个味道上都有一个扩展它的类,因此我们可以对每个味道进行较小的更改

问题是,随着时间的推移,基本行为类已经变成了一个怪物,重构可能会打破一种或另一种风格(大约有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逻辑和常量都保存在一个位置:-)