- Provides a clean separation of concerns among UI (Presentation layer), model (Transfer objects/Domain Objects/Entities) and Business Logic (Controller).
 - Easy to UNIT Test
 - Improved reusability of model and views. We can have multiple views which can point to the same model and vice versa.
 - Improved structuring of the code