Frage

Ich bin mir sicher, dass diese Frage bereits gestellt und beantwortet wurde, also entschuldige ich mich im Voraus dafür, aber ich finde nicht die richtigen Schlüsselwörter für die Suche heraus.Die Suche nach „Muster“ stößt auf viel zu viele Fragen und Antworten, als dass sie nützlich wäre.

Ich arbeite an einer Regressionstest-App.Ich zeige ein Formular auf dem Bildschirm an und je nachdem, welcher Benutzer bei der App angemeldet ist, sollten einige Felder schreibgeschützt sein.Ich kann also ein Feldobjekt abstrahieren und ich kann ein Benutzerobjekt abstrahieren, aber nach welchem ​​Muster sollte ich suchen, um die Schnittmenge dieser beiden Konzepte zu beschreiben?Mit anderen Worten: Wie soll ich beschreiben, dass das Feld für Feld 1 und Benutzer A schreibgeschützt sein sollte?Es scheint, als ob schreibgeschützt (oder nicht) eine Eigenschaft der Field-Klasse sein sollte, aber wie gesagt, es hängt davon ab, welcher Benutzer das Formular betrachtet.Ich habe über ein einfaches zweidimensionales Array nachgedacht (z.G.ReadOnly[Field,User] = True), aber ich möchte sicherstellen, dass ich die effektivste Struktur ausgewählt habe, um dies darzustellen.

Gibt es Software-Designmuster für diese Art von Datenstruktur?Mache ich die Dinge zu kompliziert – wäre ein zweidimensionales Array hier der beste Weg?Wie ich bereits sagte, wenn diese Frage gestellt und beantwortet wurde, entschuldige ich mich.Ich habe hier gesucht und nichts gefunden, und auch eine Google-Suche hat nichts ergeben.

War es hilfreich?

Lösung

Tabellengesteuerte Designs können effektiv sein.Steve Maguire hatte ein paar schöne Beispiele Schreiben Solide Code .

Sie sind auch eine großartige Möglichkeit, Tests zu erfassen fit .

In Ihrem Fall so etwas wie:

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

field1.readOnly = Field1ReadonlyRules[ someUser.userClass ]

Nebenbei möchten Sie wahrscheinlich modellieren beide Benutzer und Benutzerklassen/Rollen/Gruppen, anstatt sie zu kombinieren.Ein Benutzer erfasst normalerweise WHO (Authentifizierung) während der Erfassung von Gruppen/Rollen Was (Berechtigungen, Fähigkeiten)

Andere Tipps

Auf den ersten Blick hört es sich eher so an, als hätten Sie zwei verschiedene Arten von Benutzern mit unterschiedlichen Zugriffsebenen.Dies könnte durch Vererbung (PowerUser, Benutzer) oder durch die Aufnahme eines Sicherheitsobjekts oder Tokens gelöst werden, das die Ebene für den Benutzer festlegt.

Wenn Ihnen die Vererbung grundsätzlich nicht gefällt, können Sie ein Statusmuster für die Anwendung verwenden, die Benutzerobjekte dekorieren (Shudder) oder möglicherweise Strategiemuster für unterschiedliche Sicherheitsstufen hinzufügen.Aber ich denke, es ist noch etwas früh, denn normalerweise wende ich keine Muster an, bis ich eine genaue Vorstellung davon habe, wie der Artikel wachsen und gepflegt werden soll.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top