Alasan mengapa mereka umumnya dipisahkan adalah karena Anda ingin pandangan Anda menggunakan pengontrol untuk mendapatkan model Anda. Tetapi arsitektur harus memungkinkan Anda untuk mengganti satu tampilan dengan yang lain tanpa harus mengubah logika bisnis (yaitu model objek atau bagaimana objek-objek itu diambil).
Dengan tidak mengikat pengontrol Anda langsung ke tampilan, nanti saya akan jauh lebih mudah untuk menambahkan fungsi lain seperti impor / ekspor yang dapat menggunakan pengontrol / model secara langsung tanpa harus bergantung pada UI.
Keuntungan lain dari mendorong kode sebanyak mungkin keluar dari UI adalah karena UI jauh lebih sulit untuk diuji unit daripada lapisan bisnis di belakangnya. Dengan memisahkan sebanyak mungkin dari tampilan itu sendiri, Anda dapat menulis lebih banyak unit test untuk memastikan controller / model dan logika aplikasi Anda benar.
Pengontrol menangani logika bisnis yang dapat berubah dari waktu ke waktu, dan Tampilan mungkin tetap tidak berubah, sesuai persyaratan.
Sebaliknya di atas juga benar.
Desainer dan Pengembang harus dapat bekerja pada proyek yang sama secara mandiri.
Posting yang bagus: http://mashable.com/2011/11/11/designer-collaboration-strategies/
Seluruh sistem menjadi lebih mudah dikelola. Memecahkan bug menjadi lebih mudah dengan pendekatan yang dipisahkan.
Standar web dengan teknologi ujung depan berubah dengan cepat. Bayangkan sebuah perusahaan memutuskan untuk memigrasi semua teknologi front-end ke HTML5, Dart, dll. Memiliki Tampilan dan Pengontrol yang digabungkan akan menjadi mimpi buruk!
sumber
Anda tidak harus memisahkan keduanya tentunya. Tetapi jika tampilan dan pengontrol independen maka setiap antarmuka pengguna dapat digunakan. Misalnya Anda dapat menggunakan pengontrol melalui konsol, soket, antarmuka web, atau desktop. Dengan kata lain, Anda dapat meningkatkan penggunaan kembali kode.
sumber