What is the difference between Strategy design pattern and State design pattern?

前端 未结 19 1927
太阳男子
太阳男子 2020-12-02 04:06

What are the differences between the Strategy design pattern and the State design pattern? I was going through quite a few articles on the web but could not make out the dif

19条回答
  •  没有蜡笔的小新
    2020-12-02 04:28

    Honestly, the two patterns are pretty similar in practice, and the defining difference between them tends to vary depending on who you ask. Some popular choices are:

    • States store a reference to the context object that contains them. Strategies do not.
    • States are allowed to replace themselves (IE: to change the state of the context object to something else), while Strategies are not.
    • Strategies are passed to the context object as parameters, while States are created by the context object itself.
    • Strategies only handle a single, specific task, while States provide the underlying implementation for everything (or most everything) the context object does.

    A "classic" implementation would match either State or Strategy for every item on the list, but you do run across hybrids that have mixes of both. Whether a particular one is more State-y or Strategy-y is ultimately a subjective question.

提交回复
热议问题