SOLID Design Patterns in JavaScript