我正在通读这篇关于状态模式的link。这看起来像是战略模式吗?这两种模式的确切区别是什么?
发布于 2012-05-08 23:07:59
状态和策略的区别在于意图。有了Strategy,算法的选择相当稳定。对于State,“context”对象的状态更改会导致它从策略对象的“调色板”中进行选择。
请参阅http://sourcemaking.com/design_patterns/state
发布于 2014-04-26 21:33:00
策略模式与状态模式非常相似。不同之处之一是Context包含状态作为实例变量,并且可以有多个任务,其实现可以依赖于状态,而在策略模式中,策略作为参数传递给方法,并且context对象没有任何变量来存储它。
有关更多详细信息,请参阅Strategy design pattern in java example tutorial
发布于 2016-01-20 03:57:23
我认为一个主要的区别是:
对于状态模式,我们将上下文本身作为参数传递给需要分配给上下文的状态具体类的方法,它做两件事:首先,它将自己分配给已发送的上下文,其次,它执行自己的角色。
新的策略模式,我们在第一次创建时将策略传递给上下文,因此它对整个程序保持不变,除非我们使用“-In”将相同的变量分配给内存中的新上下文(指针)并为其分配新策略,过一段时间垃圾收集器将使用其分配的策略消除旧上下文。
更清楚的是,策略对于一个上下文是固定的,一旦分配,就不能更改,即使该上下文也没有策略设置器。但是对于状态,许多状态可以被一个接一个地分配给相同的上下文,因为上下文有一个状态的设置器。
我希望它是有用的。
https://stackoverflow.com/questions/10500927
复制相似问题