Ich habe das Decorator-Muster für die Verwaltung komplexer Rollen verwendet.
Beispiel aus der Spitze von meinem Kopf:
public abstract class DecoratedUser : User
{
protected User _decoratedUser;
public DecoratedUser(User decoratedUser)
{
_decoratedUser = decoratedUser;
}
public abstract List<Permissions> GetPermissions;
}
public EditorUser : DecoratedUser
{
public EditorUser(User decoratedUser)
: base(decoratedUser)
{}
public override List<Permissions> GetPermissions
{
// return previous permissions + editor permissions
}
}
public ModeratorUser : DecoratedUser
{
public ModeratorUser(User decoratedUser)
: base(decoratedUser)
{}
public override List<Permissions> GetPermissions
{
// return previous permissions + moderator permissions
}
}
Nun, es ist ein leistungsfähiges api, aber wenn Sie zum ersten Mal auf, um es überwältigenden beginnen und sehen aus wie ein OO Überlauf. –
@ Andre- einverstanden. Interessanterweise verwendet .NET System.IO API die gleichen Muster, aber in .NET 2.0 haben sie viele hilfreiche Methoden wie File.ReadAllLines hinzugefügt. Brad Abrams hat ein recht interessantes Beispiel für die API-Unterschiede: http://blogs.msdn.com/brada/archive/2005/12/27/507624.aspx. In einigen Szenarien führt das Decorator-Muster zu Verwirrung. – RichardOD