【问题标题】:Appropriate Application of Strategy Pattern策略模式的恰当应用
【发布时间】:2014-06-12 20:02:15
【问题描述】:

我正在编写一个供应应用程序,它获取用户添加或删除请求,然后根据用户的指定角色,应用指定属性并在系统中创建它们,或者从指定角色中删除用户系统。

这是使用策略设计模式的好例子,还是其他模式可以工作?每个用户对他们执行相同的操作,但是每个操作根据用户的上下文而有所不同。

【问题讨论】:

  • 检查命令模式。也许它会在你的情况下工作得更好。
  • 是的,策略听起来很适合捕捉用户之间的差异。
  • 战略是理想的。但是,您可能希望通过界面访问该策略,然后根据您的“上下文”注入适当的混凝土。你能做到吗?
  • @DavidOsborne。您能否详细说明您所指的内容?
  • 因此您的策略界面将与 OperationX() 和 OperationY() 一起使用,正如您所说的,它们对每个都是相同的。然后,您需要两种策略来实现接口,但以不同的方式执行 OperationX() 和 OperationY()。到目前为止,一切都很好。然而,解决方案的优雅之处在于注入了适当的策略,这样调用者就不会注意到实际的策略。有时您需要用来选择具体策略的标准并不是进行选择的最佳位置,您最终会得到:if user.property == 1 then... else.

标签: c# oop design-patterns strategy-pattern


【解决方案1】:

我认为策略模式是可行的。

如果操作可以针对不同类型/用户组进行分类和混合,您可能也想尝试装饰器模式:实际上,您可能希望在识别用户角色时将一些操作累积到一个中,例如:

角色 1 - 操作 1

角色 2 - 操作 2

角色 3 - 操作 3

用户具有角色 1 和 3,那么他应该将操作 1 和 3 集成到一个操作中。

【讨论】:

  • 幸运的是,用户没有多个角色,所以我认为我不必使用装饰器模式。感谢您提出这个问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多