State

The state patterns allows an object to change its behavior when its internal state changes. Largely overtaken by metaprogramming in Ruby.