Examples of common design patterns in .NET (C#)