The Strategy pattern in C# lets the algorithm vary independently from clients that use it. There may be different algorithms (strategies) that apply to a given problem. If the algorithms are all kept in the client, messy code with lots of conditional statements will result.