J'ai travaillé sur des applications avec des niveaux de service. Bien que ce ne soit pas la meilleure façon, voici comment je l'ai vu faire.
1) Déterminez quelles caractéristiques sont communes à tous les niveaux. Les fonctionnalités communes n'ont pas besoin de logique car elles sont accessibles à tous.
2) Les caractéristiques qui ne sont pas communes doivent être éclatées de manière granulaire. donc ils peuvent être activés/désactivés un à la fois.
3) Affectez une matrice d'entités aux niveaux.
Nous avions une application de licence qui était essentiellement un tas de cases à cocher de toutes les fonctionnalités granulaires. Choisir "Lite" permettrait de cocher les cases appropriées alors quand le code de licence a été généré, il inclurait ces fonctionnalités.
Au démarrage, le serveur de licences a été interrogé en toute sécurité. (Il s'agissait d'une application serveur, elle ne démarrait et n'arrêtait donc pas très souvent, et Internet était garanti) Une liste de fonctionnalités autorisées était renvoyée à l'application.
Dans le code, il vous suffit de vérifier la météo pour activer une fonction et laisser le serveur de licences déterminer le niveau dans lequel se trouve l'utilisateur.
Une autre façon que j'ai vu dans les jeux PC pour les disques de démonstration est d'avoir une cible de compilation pour chaque niveau.
#DEFINE TIER_NORMAL 1
#DEFINE TIER_LITE etc.
then
#ifdef TIER_NORMAL
do tier normal stuff
#endif
Notez que vous devez garder une trace de 3 binaires différents, ce qui peut être une douleur. Mais le résultat est que vous n'avez aucun code livré que l'utilisateur n'a pas payé. Peut-être plus facile dans un projet plus petit que d'obtenir le bon serveur de licences.
C'est ce que j'ai pensé, merci pour la réponse. – JGeiser