策略模式和委托模式(不是委托)有什么不同?
发布于 2009-08-03 22:13:52
“委托”实际上不是一种设计模式,它更像是一种通用的编程技术,组件A将任务(无论是哪种类型的任务)委托给组件B。委托可以在许多上下文中使用。
另一方面,策略模式是一种特定的模式,它通常大量使用委托作为实现细节。
例如,您可以实现策略模式,并使用
strategy.execute(x)
策略模式包括拥有策略接口的各种实现,并在运行时选择适当的实现。调用该实现行为是委托。
所以这不是非此即彼的,概念是互补的。
发布于 2011-02-24 02:31:56
这是一个想法:
委托模仿委托类(至少在我使用它们时,不确定这是否是规范的方式,但我通常是这样做的)。因此,基本上,如果我有一个有多个入口点(方法)的类,并且我想在运行时更改实现,我会创建实现相同接口的委托。
另一方面,如果我想要在运行时交换类的一部分,我会创建具有单个方法接口的策略类(例如,.executeCalculation),并使其成为包含类的聚合组件。
因此,简而言之,一个策略包含单个行为,委托实现一组行为,您可以使用委托来实现策略。
发布于 2017-05-31 01:55:59
如果您的意思是策略模式与委托,就像在函数/lambda中作为参数传递一样,那么至少我知道需要为委托编译的类的开销更少。
实际上,我在这个页面上寻找一些人来给我讲讲仍然使用设计模式路由的好处,因为java8和C#现在都支持将函数作为参数传递。
https://stackoverflow.com/questions/1224830
复制相似问题