我喜欢 Steve Yegge 的原型模式示例,并决定创建一个快速概念验证示例。
然而,我并没有真正考虑清楚。虽然它非常适合动态指定对象的行为并且是史蒂夫固执己见的精灵示例的简单解决方案,但我仍在尝试找出处理实例变量的最佳方法。
例如,假设我有一个 AwesomeDragon 对象。然后我想制作一个 AwesomeDragonImmuneToFire 对象,因此我制作了 AwesomeDragon 的新子代(AwesomeDragonImmuneToFire 继承了 AwesomeDragon 的属性)并将“ImmuneToFire”作为值为“true”的属性。到现在为止还挺好。现在假设我想发送我的 AwesomeDragon 对象去参观附近的农村。这将涉及更新 AwesomeDragon 的“位置”属性。然而,当我这样做的那一刻 AwesomeDragonImmuneToFire 也会起飞。
是在创建对象时覆盖实例值的最佳解决方案,例如立即将 AwesomeDragonImmuneToFire 上的“位置”值“放置”到“位置”的当前“获取”值?