Parking lot management system demonstrating SOLID principles, Object-Oriented-Programming and Design Patterns (Strategy, Iterator, Static Factory Method, Facade etc.)