Hands-on design patterns with C# and .NET Core : write clean and maintainable code by using reusable solutions to common software design problems /: write clean and maintainable code by using reusable solutions to common software design problems. (2019)