当我浏览设计模式时,我对策略模式和工厂模式选择感到困惑。尽管一种是行为模式,后来是创造模式,但其中任何一种都可以实现需求。就像单个接口已被多个具体类扩展一样,并且具体实现的选择是在运行时发生的。
但是我很困惑在什么场景下应该使用哪个。 当我试图从可用的人工智能中了解时,唯一强调的一点是策略具有更精细的控制。
有人可以帮助我了解更多实际场景以及在不同场景下如何选择吗?
对于策略模式,想象一个游戏,您有一个已抽象为以下界面的游戏方法:
interface IPlayingApproach
{
void Play();
}
要赢得比赛,您可以采取不同的方法。例如,您可以积极进攻或谨慎行事。
这些策略可以具体实施游戏方法:
public class AggressiveAttackStrategy : IPlayingApproach
{
public void Play()
{
// Attack aggressively
}
}
public class ProceedCautiouslyStrategy : IPlayingApproach
{
public void Play()
{
// Proceed cautiously
}
}
现在,可以在运行时选择适当的策略:
public void Main()
{
var game = new Game();
if (playerHasChosenAggressiveApproach)
{
game.PlayingApproach = new AggressiveAttackStrategy();
}
else
{
game.PlayingApproach = new ProceedCautiouslyStrategy();
}
}
这是一个非常人为的示例,但我认为它以简单的方式演示了该模式。
最终,当您有不同的做某事的方法,并且可以在消费者不知道或不需要知道细节的情况下互换时,策略模式会很有用。