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