All right so let's try to summarize some of the things that we've learned about the state Design Patterns
so we saw that generally given sufficient complexity and pace to formally define all the possible states
as well as all the triggers for a given state machine.
And you can do it in several different ways.
So we looked at two ways in which we kind of implemented the state machine.
One is where I just made a map of things and the other is where we use the boost meditate library.
So it's really up to you which one you go for certainly using something like Boost is a lot more robust
because you know that lots of people who worked on the library that is being tested and is generally
a more reliable approach.
But if your state machine is really simple then you can just to just do a simple implementation with
something like a map.
Now the first example that I've shown in this section of the course was more of a curiosity example.
So yes it is in fact the kind of classic implementation of the state design pattern where each of the
States itself has functionality for switching itself to a different state and then even possibly deleting
itself.
But that's not how things are done in the real world.
I've had it there for curiosity's sake but it's not a realistic approach.
So the kind of things that you can define as part of the state machine and will look at that with the
Boost MSM are the following so you can define state entry and exit behaviors.
So as you enter a state those as you exit this state you can also perform some additional actions.
You can have actions which are when a particular event causes a transition.
So when your event.
So essentially attaching an action to the trigger we haven't looked at that.
But essentially when you fire the trigger you can attach an action to that.
Well we also looked at Garth conditions which enable or disable a particular transition.
And also we looked at the default action when no transitions are found for a particular event so you
can handle that situation as well.