В каких ситуациях шаблон Decorator действительно решает проблему? - PullRequest
2 голосов
/ 11 июня 2009

Я думаю, классическим примером является то, что класс Window может иметь декоратор Border и декоратор ScrollBar в книге GoF.

В каких ситуациях вы думаете, знаете, в которых Pattern Decorator действительно решает проблему?

Ответы [ 3 ]

3 голосов
/ 11 июня 2009

Я использовал шаблон Decorator для управления сложными ролями.

Пример с макушки моей головы:

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
  }
}
1 голос
/ 11 июня 2009

Все, что абстрагируемо до расширяемого корня, для которого вы должны определить различные перекрывающиеся и взаимозаменяемые поведения:

  • Окна и границы, полосы прокрутки и меню
  • Музыкальные инструменты (звуковые волны) и эффекты (фленджер, вау-вау и т. Д.)
  • NPC и вооружение

и так далее ...

1 голос
/ 11 июня 2009

Пакет java.io .

...