A practical guide to writing C# programs using the most common patterns. This tutorial begins with introductions to C#, object-oriented programming and inheritance, and UML diagrams. It describes one of twenty-three design patterns, recommends when to use it, and explains the impact that it will have on the larger design.