如何使用策略模式重构此代码?

时间:2017-05-22 08:11:36

标签: ruby strategy-pattern

我有很多验证。我正在重构这段代码:

  if is_manager?
    # if cond1
    # if cond2
    # if cond3
  end

  if is_admin?
    # if cond4
    # if cond5
    # if cond6
  end

  def is_user?
    # if cond9
    # if cond8
    # if cond7
  end

我想根据正在进行操作的用户类型应用不同的策略。我正在考虑为不同的用户创建策略,但我想知道如何避免所有这些if

我想出了类似的东西。

  v = Validator.new # my context object
  v.add(Validation::ManagerStategy.new) if is_manager?
  v.add(Validation::AdminStategy.new) if is_admin?
  v.add(Validation::UserStategy.new) if is_user?
  v.validate()

但我不确定我是否以正确的方式实施它。

0 个答案:

没有答案