Behavioral design patterns are concerned with algorithms and the assignment of responsibilities between objects.
Lets you save and restore the previous state of an object without revealing the details of its implementation.
Lets an object alter its behavior when its internal state changes. It appears as if the object changed its class.