The State design pattern allows an object to dramatically change its behavior that depends on the state of this object. It replaces complex branching inside the object and separates the behavior of concrete states into separate classes. It's very similar to the Strategy design pattern where, on the contrary, it's the client who chooses the specific strategy (the behavior given by the object instance).
If we perform an algorithm that reacts strongly to the internal state of the
object, we usually have to perform a complex branching of the state inside its
methods using the
switch construct or the
if ... else if ... sequence. Imagine, for example, that we program
the ghost AI in the Pacman game. They usually change their behavior to chase
Pacman. After a while, they just move randomly in a maze, and if the ghost is
blue (the player picked a power-up), they even run away from Pacman. The ghost
will have, for example,
...End of the preview...
ict.social is a large database made up of manuals and tutorials, whose main goal is to provide high-quality IT education to everyone. We started out in the Czech republic, where we display roughly a million articles per month and receive plenty of gratitude from our users. Thanks to our successful establishment, we are now bringing these articles to the rest of the world.
Although we are trying to keep our content free of charge, maintaining the site is a huge effort for everyone involved. Therefore, some content (exercises and more advanced material) costs network points. Don't worry, they're really cheap :)
Requested article covers this content:
The State design pattern allows an object to dramatically change its behavior, which depends on the object's state. Replaces complex branching.
Buying this article gives you unlimited access to it forever. You will learn some more and help us keep giving our site maintenance which helps you and others get better futures. It's a win-win.
You gain points by supporting our network. This is done by sending a helpful amount of money to support the site, or by creating content for the network.
You can get points immediately using:
|Credit card||SMS||Wire transfer|