A demo of various design patterns in C#