This is a immense topic, but on this post I will try to summarize the core concepts and explain the most common design patterns in software (or at least those I've personally run into during my career); like a "cheatsheet", or like a public personal note, that most likely will need to keep updating.
Read more...