【发布时间】:2014-06-12 20:02:15
【问题描述】:
我正在编写一个供应应用程序,它获取用户添加或删除请求,然后根据用户的指定角色,应用指定属性并在系统中创建它们,或者从指定角色中删除用户系统。
这是使用策略设计模式的好例子,还是其他模式可以工作?每个用户对他们执行相同的操作,但是每个操作根据用户的上下文而有所不同。
【问题讨论】:
-
检查命令模式。也许它会在你的情况下工作得更好。
-
是的,策略听起来很适合捕捉用户之间的差异。
-
战略是理想的。但是,您可能希望通过界面访问该策略,然后根据您的“上下文”注入适当的混凝土。你能做到吗?
-
@DavidOsborne。您能否详细说明您所指的内容?
-
因此您的策略界面将与 OperationX() 和 OperationY() 一起使用,正如您所说的,它们对每个都是相同的。然后,您需要两种策略来实现接口,但以不同的方式执行 OperationX() 和 OperationY()。到目前为止,一切都很好。然而,解决方案的优雅之处在于注入了适当的策略,这样调用者就不会注意到实际的策略。有时您需要用来选择具体策略的标准并不是进行选择的最佳位置,您最终会得到:if user.property == 1 then... else.
标签: c# oop design-patterns strategy-pattern