Basic C# implementations of the main software design patterns