Command Design Pattern Explained with C# Examples