Powiedzmy, że mam darmową i płatną wersję aplikacji. Wersja płatna jest nadzbiorem bezpłatnej wersji dotyczącej funkcji dostępnych dla użytkowników, co oznacza, że wersja płatna będzie miała wszystkie funkcje darmowej aplikacji plus dodatkowe.
Czy istnieje wzorzec przełączania dostępności funkcji na podstawie flagi, która ładuje się przy starcie (np. Bezpłatny / płatny)?
Nie podoba mi się pomysł posiadania następujących bloków kodu wszędzie:
if(isFreeVersion){
// ...
} else {
// ...
}
Posiadanie 2 oddzielnych gałęzi git dla każdej wersji nie jest opcją, ponieważ oznaczałoby to utrzymanie 2 (lub więcej) źródeł kodu, wydaje się ogólnie niepraktyczne i jest omówione bardziej tutaj: Utrzymanie dwóch oddzielnych wersji oprogramowania z tej samej bazy kodów w Kontroli wersji .
Czy istnieje sposób, aby to zrobić, wciąż mając jedną bazę kodu i nie zaśmiecając kodu instrukcjami warunkowymi, które sprawdzają flagę darmową / płatną?
Jestem pewien, że było to omawiane wiele razy wcześniej i jestem pewien, że istnieją pewne wzorce podejścia do tego problemu, ale po prostu nie mogę go znaleźć.
Używamy Androida / Java.
if
sprawdzanie ukrywania elementów sterujących zabronionych funkcji lub wyświetlanie wyskakujących okien dialogowych, gdy użytkownik próbuje zrobić to, czego nie wolno mu robić. Mam nadzieję znaleźć sposób na uniknięcie wielu warunków warunkowych w kodzie