Using Design Patterns in .NET