Question

Je suis sûr que cela a déjà été demandé et répondu donc je m'excuse à l'avance pour cela, mais je ne suis pas de trouver le bon mots clés de la recherche.La recherche pour "Modèle" frappe beaucoup trop de Q & A pour être utile.

Je travaille sur un test de régression de l'app.Je suis l'affichage d'un formulaire à l'écran et en fonction de l'utilisateur qui est connecté à l'application de certains de ces champs doit être en lecture seule.Je peux donc en résumé un objet de champ et je peux abstraite d'un objet utilisateur, mais quel modèle dois-je regarder pour décrire l'intersection de ces deux concepts?En d'autres termes comment dois-je décrire ce que pour le Champ 1 et l'Utilisateur, le champ doit être en lecture seule?Il semble être en lecture seule (ou non) doit être une propriété de la classe de Champ, mais comme je l'ai dit, ça dépend de l'utilisateur est à la recherche à la forme.Je l'ai considéré comme un simple tableau à deux dimensions (e.g.ReadOnly[Champ,l'Utilisateur] = Vrai), mais je veux m'assurer que j'ai repris la structure la plus efficace pour représenter cette.

Existe-il des modèles de conception de logiciels qui concerne ce type de structure de données?Suis-je de compliquer à l'excès choses, serait un tableau à deux dimensions, la meilleure façon d'aller ici?Comme je l'ai dit si cela a été demandé et a répondu, je ne m'en excuse.J'ai fait une recherche ici et n'a rien trouvé et une recherche sur Google a échoué à rien non plus.

Était-ce utile?

La solution

Pilotée par un tableau de modèles peut être efficace.Steve Maguire avait quelques beaux exemples dans L'écriture Solide Code .

Ils sont aussi un excellent moyen de capturer des tests, voir ajustement .

Dans votre cas, quelque chose comme:

Field1ReadonlyRules = {
    'user class 1' : True,
    'user class 2' : False
}

field1.readOnly = Field1ReadonlyRules[ someUser.userClass ]

En aparté, vous voudrez probablement le modèle les deux les utilisateurs et les classes/rôles/groupes au lieu de les combiner.Un utilisateur capte généralement qui (authentification), tandis que les groupes et les rôles de capture ce (autorisations, des capacités)

Autres conseils

À première vue, il semble plus que vous avez deux types d'utilisateurs et ils ont différents niveaux d'accès.Ceci peut être résolu par l'héritage (PowerUser, Utilisateur) ou par contenant un objet de sécurité ou jeton qui fixe le niveau de l'utilisateur.

Si vous n'aimez pas l'héritage comme une règle, vous pouvez utiliser un État de modèle de l'application, de Décorer les objets utilisateur (Frisson) ou peut-être ajouter de la stratégie de modèles de différents niveaux de sécurité.Mais je pense que c'est un peu tôt pour l'instant, je n'ai pas l'habitude d'appliquer des modèles jusqu'à ce que j'ai une idée précise de la façon dont l'élément seront cultivés et entretenus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top