Design Patterns and Program Structure (in the Real World)

In the agile world, where individual programmers make design decisions on a minute-by-minute basis, excellent code structure—and the design knowledge that makes that structure possible—is essential. Without it, your code will not be able to stand up to the stress of changing requirements.

This class covers the structural side of object-oriented design in considerable depth. Topics include class-hierarchy structure (and fragile base classes), accessors and mutators, the SOLID principles, designing for volatility, and most importantly, a contemporary and in-depth look at the Gang-of-Four design patterns.

The class has a practical focus. For example, in the real world, design patterns do not exist in the splendid isolation implied by the catalog approach usually used to teach them. They overlap one another and interact in complex ways. This class takes a unique approach to teaching patterns: we analyze several nontrivial computer programs in terms of the patterns used to implement them. The example code covers all all of the Gang-of-Four patterns. We'll see how the strengths and weaknesses of the patterns play off one another, and you'll get a chance to both see how real-world realizations of the patterns differ from the Gang-of-Four examples, and at how a given pattern can be implemented in various ways. We look at lots of code.

Moreover, languages and practice have both evolved since the Design Patterns book was written, and we'll look at how the patterns have evolved to fit contemporary practice. For example, the Command pattern can be implemented in both functional and OO ways, and we'll look at both approaches. We also cover a few essential patterns not discussed by the GoF.

This class is taught by Allen Holub, who's both a master architect and a world-class programmer. The focus is on real-world application, not on theory.

You will come away from this class with a solid practical understanding how to craft high-quality code.

The examples are in Java, but C++, C#, Swift, and Objective-C programmers should have no problem following along.