我在遗留系统中有一个看起来像这样的模型:
class Prize < ActiveRecord::Base
def win
# do a bunch of things
end
end
我们从一个奖品开始,但像其他任何东西一样,我们正在处理的奖品类型开始扩大。所以现在 def win 正在做一大堆案例/切换来决定奖品类型。
出于这个原因,我决定这样做:
class DailyPrize < Prize
def win
#do only daily prize stuff, no type checking.
end
end
在我们将其发送给 QA 之前,该代码已经过审查,现在我被要求使用组合(mixin)而不是子类化来执行此操作。我想不出一个干净的方法来做到这一点。
遗留代码库在很多地方执行以下操作,我不想到处更改东西:
奖品 = Prize.new Prize.win
那么,我的问题是如何使用组合来实现这一点?