Partitioning & Layering a Software App

This course focuses on techniques such as interface-based design, proper use of inheritance, inversion of control, factories, single responsibility, facades, and other patterns and techniques that help develop software layers.