策略模式与委托模式之间的区别

hIp*_*pPy 19 design-patterns delegation strategy-pattern

策略模式和委托模式(不是委托)之间有什么区别?

mso*_*son 22

策略模式是针对常见软件问题的非常具体的设计解决方案.战略模式意味着会有

  • 一个名为Strategy的接口(或作为名称的一部分使用Strategy).这个接口应该有一个名为execute()的方法.
  • 一个或多个具体类,称为ConcreteStrategyA,ConcreteStrategyB等,它们实现了Strategy接口.
  • 还应该有一个包含策略的上下文类

委托更像是一种主体,而不是一种模式.委托意味着不是让一个对象负责一切,而是将责任委托给其他对象.这是一种常见技术的原因是它通过减少耦合和增加凝聚力来强制执行软件开发的两个更基本的原则.

说了这么多,不要担心模式.专注于校长,如果你觉得你的解决方案可以改进 - 看模式,看看是否有更好的捕鼠器.如果你专注于模式而不是主体,你会发现自己迷失在所有模式中并为了实现模式而实现模式......

  • 委托模式和依赖注入是一回事吗? (2认同)

ska*_*man 12

"委托"实际上不是一种设计模式,它更像是一种通用编程技术,其中组件A将任务(可能是任何类型的任务)委托给组件B.委托可以在许多上下文中使用.

另一方面,策略模式是一种特定模式,通常将委托作为实现细节大量使用.

例如,您可以实现策略模式并使用它来调用它

strategy.execute(x)
Run Code Online (Sandbox Code Playgroud)

策略模式涉及到Strategy接口的各种实现,并在运行时选择适当的实现.调用该实现的行为是委托.

所以这不是概念,也不是概念.