Permit an object to change its behavior when its state changes by virtue of changing its class at run time.