Strategy Design Pattern
This video presents the strategy design pattern. You use this pattern if you need to dynamically change an algorithm used by an object at run time. The pattern also allows you to eliminate code duplication. It separates behavior from super and subclasses.