J'ai utilisé le modèle Décorateur pour gérer des rôles complexes.
Exemple du haut de ma tête:
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
}
}
Eh bien, il est un api puissant, mais quand vous commencez à ce sujet, il est accablant et ressemble à un trop-plein de OO. –
@ Andre- convenu. Il est intéressant de noter que l'API .NET System.IO utilise les mêmes modèles mais dans .NET 2.0, ils ont ajouté un grand nombre de méthodes utiles comme File.ReadAllLines. Brad Abrams a un exemple assez intéressant des différences API: http://blogs.msdn.com/brada/archive/2005/12/27/507624.aspx. Dans certains scénarios, le motif Décorateur mène à la confusion. – RichardOD