A **design pattern** that defines a family of interchangeable algorithms, encapsulating each one and making them interchangeable at runtime. (Ch. 25)