Think design pattern something's like a recipe book, when you want to order chicken with chilli and paper and you don't have recipe book you gotta say it literally which longer than you say from the recipe book instead. So, design pattern is a vocabulary/look up terms for developer to talk about design, so we will focus on the design rather than implementation
- separate something that always change and not
- focus on interface not implementation
- compositon over inheritance
- strive for loosely coupled design between objects and interact
- classes should open to extension and close to modification