【问题标题】:Decorator pattern in smalltalksmalltalk 中的装饰器模式
【发布时间】:2014-12-30 20:53:07
【问题描述】:

我一直在徒劳地寻找在 smalltalk 中正确实现装饰器模式的方法。有人可以给我一个参考吗?

编辑:我正在构建一个包含玩家和简单碰撞对象的游戏。我不想子类化,而是想使用装饰器在运行时构造相同碰撞对象的稍微不同的版本(例如,一个爆炸的、一个移动的、一个同时进行的,等等)。

【问题讨论】:

  • 请更好地描述您打算如何使用装饰器。
  • 我编辑了我的帖子以添加解释
  • 您确定要装饰器而不是策略吗?
  • @Tobias 通过封装某种行为,策略模式可以让我完全切换策略。但是,我只想扩展行为,而不是完全改变它。实际上,我需要执行一系列策略。这仍然是策略模式吗?
  • @Thyrel 关于 Smalltalk 模式实现的开创性书籍是 Sherman R. Alpert、Kyle Brown 和 Bobby Woolf 合着的“The Design Patterns Smalltalk Companion”,Addison Wesley(1998 年)。它有一章关于装饰器模式..

标签: decorator smalltalk squeak


【解决方案1】:

您可能想看看 Seaside 和 WADecoration。虽然是一个很好的参考,但它可能不是很容易理解,因为 Seaside 使用了更多的模式。

【讨论】:

    【解决方案2】:

    您可以使用装饰器模式通过在叶实例之前将多个装饰链接在一起来对多个行为列表进行建模。

    您可以像这样提取更通用的装饰器方法:

    decorated
        self decoration.
        forward decorated.
    

    该类需要一个实例方法,例如:

    initialise: forwarded
        forward:=forwarded.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 2012-02-04
      • 1970-01-01
      相关资源
      最近更新 更多