Decorator Pattern在什么情况下能很好地解决问题?

时间:2009-06-10 22:04:29

标签: design-patterns

我认为一个典型的例子是Window类可以在GoF书中有一个Border装饰器和一个ScrollBar装饰器。

你认为,装腔作势模式能够很好地解决问题的一些情况是什么?

3 个答案:

答案 0 :(得分:3)

我使用了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 :(得分:1)

java.io包。

答案 2 :(得分:1)

任何可扩展的根都可以在其上定义不同的重叠和可互换行为的东西:

  • Windows和边框,滚动条和菜单栏
  • 乐器(音频波)和效果(镶边,哇哇等)
  • 全国人大和武器

依旧......