在实现策略模式时,将决定使用哪种策略的代码放在哪里?一些示例伪代码会有所帮助。
问问题
681 次
3 回答
4
该决定由使用策略模式的对象的客户端做出。例如,假设您有一个角色对象,该对象使用不同的攻击方式攻击其他角色,具体取决于角色当时所拥有的武器。然后,当游戏玩家选择角色将使用的武器时,将决定使用哪种策略。
因此,角色和武器(示例中策略模式的两个主要组件)都不能决定使用哪个策略,而是使用角色和武器的代码来决定。通过简单地创建一个新的武器对象(比如 RayGunWeapon)并将其“提供”给您的角色,可以改变角色的行为。
即使您可以编写显式选择策略的代码,我认为这种模式的真正价值在于它可以在运行时完成。
于 2009-05-13T04:10:15.013 回答
1
你如何选择实现它将决定代码在哪里,以及它是在运行时编译还是在运行时完成。
例如,如果您使用依赖注入 (DI),那么您通常可以通过更改 xml 文件在运行时注入不同的策略。
如果您使用 AOP,那么它将在运行时或编译时,这取决于您编写方面的方式。
如果您使用 Spring Framework,那么这类似于使用 DI,并且可以像在不同的类中连接一样简单。
如果您使用服务定位器,那么它可能就像在不同的 DLL 中交换一样简单。
基本上有很多方法可以实现一个策略模式,我只是列出了一些,所以它所依赖的注释是非常正确的。
于 2009-05-14T01:52:07.447 回答
0
这完全取决于您何时决定采取哪种策略。有时可以在创建时解决策略,有时它是运行时的事情。简单的答案取决于。
于 2009-05-13T04:00:29.007 回答