Diciamo che ho una versione gratuita ea pagamento dell'app. La versione a pagamento è un superset della versione gratuita relativa alle funzionalità disponibili per gli utenti, il che significa che la versione a pagamento avrà tutte le funzionalità dell'app gratuita più extra.
Esiste un modello per attivare o disattivare la disponibilità delle funzionalità in base a un flag che viene caricato all'avvio (ad esempio, gratuito / a pagamento)?
Non mi piace l'idea di avere i seguenti blocchi di codice ovunque:
if(isFreeVersion){
// ...
} else {
// ...
}
Avere 2 rami git separati per ogni versione non è un'opzione perché significherebbe mantenere 2 (o più) fonti di codice, sembra poco pratico in generale ed è discusso di più qui: Mantenere due versioni separate del software dalla stessa base di codice in Controllo versione .
C'è un modo per farlo, pur avendo una singola base di codice e non sporcare il codice con istruzioni condizionali che controllano il flag gratuito / pagato?
Sono sicuro che questo è stato discusso molte volte prima e sono sicuro che ci sono alcuni modelli per affrontare questo problema, ma non riesco proprio a trovarlo.
Usiamo Android / Java.
if
controlli per nascondere i controlli per le funzioni vietate o avere una finestra di dialogo popup per quando l'utente tenta di fare ciò che non gli è permesso. Spero di trovare un modo per evitare molti condizionali nel codice