Digamos que tengo una versión gratuita y de pago de la aplicación. La versión paga es un superconjunto de la versión gratuita con respecto a las características disponibles para los usuarios, lo que significa que la versión paga tendrá todas las características de la aplicación gratuita más un extra.
¿Existe un patrón para alternar la disponibilidad de funciones en función de un indicador que se carga al inicio (por ejemplo, gratis / pago)?
No me gusta la idea de tener los siguientes bloques de código en todas partes:
if(isFreeVersion){
// ...
} else {
// ...
}
Tener 2 ramas git separadas para cada versión no es una opción porque significaría mantener 2 (o más) fuentes de código, parece poco práctico en general y se discute más aquí: Mantener dos versiones de software separadas de la misma base de código en Control de versiones .
¿Hay alguna manera de hacer esto, sin dejar de tener una sola base de código y sin ensuciar el código con declaraciones condicionales que verifican el indicador de pago / gratis?
Estoy seguro de que esto se discutió muchas veces antes y estoy seguro de que hay algunos patrones para abordar este problema, pero simplemente no puedo encontrarlo.
Usamos Android / Java.
if
controles para ocultar los controles de las características prohibidas o tener un cuadro de diálogo emergente para cuando el usuario intenta hacer lo que no tiene permitido. Espero encontrar una manera de evitar muchos condicionales en el código