我有一个User
具有introduced_by
属性的模型.根据该属性值,我以不同的方式计算我的佣金.这样做最好,最灵活的方法是什么?
我应该进行切换,还是将所有内容放在平面文件中?另外,我应该创建一个Commission
模型吗?
这是一个非常广泛的问题,因为没有代码也没有例子.然而,它似乎是Strategy
设计模式的完美案例.
我要做的是创建一个表示每个特定属性值范围的策略的类.
例如
PersonalCommission CompanyCommission HighValueCommission DefaultCommission
每个类都有一个方法,假设calculate
您可以调用传递对象的实例并返回佣金的值.
无论您何时需要执行计算,只需Commission
根据User属性初始化新的策略对象并对其进行调用calculate
.
您甚至不必使用开关,因为您可以动态初始化类.
strategy = "#{user.introduced_by}Commission".constantize strategy.new.compute(whatever)
当然,这只是一个非常简单的例子,你必须适应你的需求.