Design Patterns in .NET: Reusable Approaches in C# and F# for Object-Oriented Software Design [Paperback]