2009-06-10 4 views

Antwort

1

Alles, was zu einer ausziehbaren Wurzel abstrahierbar ist, auf dem Sie verschiedene überlappende und austauschbare Verhaltensweisen definieren müssen:

  • Fenster und Rahmen, Bildlaufleisten und Menubars
  • Musikinstrumente (Audio-Wellen) und Effekte (Flanger , Wah-Wah, und so weiter)
  • NPC und Waffen

und so weiter ...

1

Das java.io Paket.

+0

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. –

+0

@ 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

3

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 
    } 
} 
Verwandte Themen