Solid Principles And Design Patterns