C# Design Patterns: The Strategy Pattern