Ich habe drei Arten von Benutzern: A, B, C Daraus ergibt sich eine Benutzerbasisklasse und dann haben wir 3 abgeleitete Klassen. Es ist jedoch möglich, dass ein Benutzer 2 Typen gleichzeitig hat. Wie würden wir damit vernünftig umgehen, wenn wir bedenken, dass der/die Benutzertyp(en) die Art des Zugriffs auf eine Anwendung bestimmen.
Antworten
Zu viele Anzeigen?Vielleicht sollten Sie Ihr Design neu definieren. Ich würde sagen, es wäre besser, zwei Klassen zu definieren:
- eine Rollenklasse
- eine Benutzerklasse
Eine Benutzerklasse könnte dann eine Sammlung von Rollen haben. Das macht das ganze Design einfacher und sauberer.
Ein Benutzer kann keine, eine oder mehrere Rollen haben. Aber ein Benutzer ist nicht per se eine der Rollen, die er haben kann. Er hat lediglich die Fähigkeit, eine Rolle anzunehmen.
Aber natürlich können Sie hier das Decorator-Muster verwenden, wie von einem anderen Poster erwähnt.
Ich würde verwenden Dekorationsmuster z.B.
$user = new User ();
$user = new Role1 ($user);
$user = new Role2 ($user);
Ich hätte einen Blick auf die ACL Klasse des Zend Frameworks. Macht einen guten Job, wenn es darum geht, mehrere Rollen für verschiedene Benutzer zu haben. Es gibt auch viele Artikel und Blogs, die die Verwendung der Zend ACL diskutieren. Mehr Allgemeines über ACL: wikipedia - acl
Eine weitere Möglichkeit, mit unterschiedlichen Rollen und Berechtigungen umzugehen, ist die rollenbasierte Zugriffskontrolle: wikipedia - rollenbasierte Zugriffskontrolle