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