Layers is an architectural style where software responsibilities are divided among the different layers of the application.
Use the Layers architecture when
- you want clearly divide software responsibilities into differents parts of the program
- you want to prevent a change from propagating throughout the application
- you want to make your application more maintainable and testable