System Design Patterns (What and What not?)