Допустим, у меня есть бесплатная и платная версия приложения. Платная версия - расширенный вариант бесплатной версии, касающийся функций, доступных пользователям. Это означает, что платная версия будет иметь все функции бесплатного приложения плюс дополнительные.
Есть ли шаблон для переключения доступности функции на основе флага, который загружается при запуске (например, бесплатно / платно)?
Мне не нравится идея иметь везде следующие блоки кода:
if(isFreeVersion){
// ...
} else {
// ...
}
Наличие 2-х отдельных веток git для каждой версии не вариант, потому что это означало бы поддержание 2 (или более) источников кода, в общем случае нецелесообразно и обсуждается более подробно здесь: Поддержка двух отдельных версий программного обеспечения из одной и той же базы кода в управлении версиями .
Есть ли способ сделать это, все еще имея единую кодовую базу и не засоряя код условными операторами, которые проверяют флаг free / paid?
Я уверен, что это обсуждалось много раз прежде, и я уверен, что есть некоторые подходы к решению этой проблемы, но я просто не могу найти это.
Мы используем Android / Java.
if
проверки, чтобы скрыть элементы управления для запрещенных функций или всплывающее диалоговое окно, когда пользователь пытается сделать то, что ему запрещено. Я надеюсь найти способ избежать многих условных