Implement various design patterns in C# language