This project aims to demonstrate the SOLID principles :
The SOLID principles (https://en.wikipedia.org/wiki/SOLID) aim on helping for software development more reliable and more robust
A class, method or function should only have a single responsibility
prevents unexpected side-effects of future changes, much easier to explain, understand and implement
An application entity (class, function, module ...) must be open to extension, but closed to modification
avoid affecting non-wanted code
Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program (do not change superclass behavior in subtype)
loosely dependent to each other and encourages code reusability
Many client-specific interfaces are better than one general-purpose interface
Avoid huge interface with bad readability
Depend on abstractions, not implementations
Avoid dependencies that may change
Sometimes it can be felt more complex
More objects (classes / functions /methods)
Other acronym like this one: DRY: Don't Repeat Yourself (make code reusable, divide logic) KISS: Keep It Simple, Stupid (choose simplest way to code) YAGNI: You aren't gonna need it (don’t add code until deemed necessity)
This project was done on IntelliJ with Maven, so simply import the project and launch the src\main\java\Tester.java
To be useful, it is worthy to follow as much the code and logs meanwhile
Enjoy !