Pergunta

Eu tenho certeza que isso já foi feita e respondida, então eu peço desculpas antecipadamente por que, mas eu não estou para descobrir as palavras-chave corretas para procurar.Procurando por "Padrão" hits como muitos Q & A de ser útil.

Eu estou trabalhando em um teste de regressão app.Eu estou exibindo um formulário na tela e de acordo com o qual o usuário está conectado ao aplicativo de alguns dos campos deve ser só de leitura.Para que eu possa abstrata de um objeto de campo e posso abstrata de um objeto de usuário, mas que o padrão que eu deveria estar olhando para descrever a intersecção destes dois conceitos?Em outras palavras, como devo descrever que para o Campo 1 e o Usuário, o campo deve ser somente leitura?Parece que só de leitura (ou não) deve ser uma propriedade do Campo de classe, mas como eu disse, depende do que o usuário está olhando para o formulário.Eu já considerada como uma simples matriz bidimensional (p.g.ReadOnly[Campo,o Usuário] = Verdade), mas eu quero ter certeza que eu escolhi uma estrutura mais efetiva para representar isso.

Existem alguns padrões de design de software em relação a este tipo de estrutura de dados?Estou a complicar as coisas ... seria uma matriz bidimensional ser a melhor forma de o fazer aqui?Como eu disse, se isto foi perguntado e respondido, me desculpe.Fiz busca aqui e não encontrar nada e uma pesquisa no Google não conseguiu transformar-se nada.

Foi útil?

Solução

Tabela conduzido projetos podem ser eficazes.Steve Maguire teve poucos bons exemplos Escrever Sólidos Código .

Eles também são uma ótima maneira de capturar testes, consulte ajuste .

No seu caso, algo como:

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

field1.readOnly = Field1ReadonlyRules[ someUser.userClass ]

Como um aparte, você provavelmente deseja modelo ambos os usuários e as classes/funções/grupos, em vez de combiná-los.Um usuário normalmente capta que (autenticação), enquanto grupos/funções de captura de o que (permissões, capacidades)

Outras dicas

À primeira vista soa mais como você tem dois tipos diferentes de usuários e têm diferentes níveis de acesso.Isso poderia ser resolvido por herança (PowerUser, Usuário) ou por que contém um objeto de segurança ou token, que define o nível para o usuário.

Se você não gosta de herança como uma regra, você pode usar um Estado padrão no aplicativo, Decorar os objetos de usuário (Arrepio) ou, eventualmente, acrescentar estratégia de padrões para diferentes níveis de segurança.Mas eu acho que é um pouco cedo ainda, eu normalmente não se aplicam padrões até que eu tenha uma idéia firme de como o item será cultivada e ser mantida.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top