Object-oriented design and design patterns can seem complex. There are a lot of ideas and cases to consider. However, there are a handful of principles that, if followed, will result in code that complies with most if not all of the patterns. These are the patterns behind the patterns. In my mind, there are 5. In the next week or so, I'll be writing a post on each of these.