การแยกออปเจคเหล่านี้ออกจากกันจะทำให้ง่ายต่อการแก้ไขโปรแกรม เช่น เราสามารถเปลี่ยน view จาก GUI เป็น HTML (รวมทั้ง jsp, aspx, php), WML หรือ text mode ได้โดยไม่ต้องแก้โมเดล หรือเราจะสนับสนุนหลายๆวิวพร้อมๆกัน เช่น ลูกค้าตลาดหุ้นแต่ละคนจะมีหน้าจอดูราคาหุ้นในตลาดหลักทรัพย์ แต่ละคนจะมีวิวของตัวเองและจะแสดงข้อมูลหลักทรัพย์เฉพาะที่ตัวเองสนใจ ในขณะที่ออปเจคโมเดลคือหลักทรัพย์ทั้งหมดในตลาด เป็นต้น

หลักการสำคัญ ก็คือ โมเดลจะไม่สามารถเรียกเมดธอดของวิวหรือคอนโทรลเลอร์โดยตรง เนื่องจากมันจะไม่มีตัวแปรเก็บออปเจคที่เป็นวิวหรือคอนโทรลเลอร์ โมเดลมีเพียงแต่ list ของออปเจคชนิด observer (วิวหรือคอนโทรลเลอร์ที่ implement observer interface) ที่เฝ้าสังเกตุการเปลี่ยนแปลงอยู่ ตัวโมเดลจะแจ้งการเปลี่ยนแปลงด้วยการส่ง event notification message ไปให้ observer ทุกๆตัว ถ้า observer นั้นเป็นวิวก็จะอัพเดปหน้าจอด้วยขอมูลใหม่ เป็นต้น ในทำนองเดียวกันตัววิวเองก็มองไม่เห็นคอนโทรลเลอร์ ไม่สามารถเรียกเมดธอดของคอนโทรลเลอร์ได้โดยตรง นอกจากจะส่ง event ไปให้คอนโทรลเลอร์ที่เป็น observer ของวิวนั้นๆ
อาจแล้วอาจจะสงสัยว่าแล้วทำไมไม่ให้โมเดลเก็บตัวแปรวิวและคอนโทรลเลอร์โดยตรงไปเลย ไม่ต้องติดต่อกับผ่าน event notification เหตุผลก็อย่างที่บอกไว้ข้างต้น ว่าเราต้องการแยกการแสดงผลและการจัดการข้อมูลจากผู้ใช้ออกจากตัวข้อมูลที่เก็บในโมเด
ล ทำให้สามารถเปลี่ยนวิวหรือคอนโทรลเลอร์ได้โดยไม่ต้องแก้ไขโมเดล หรือสนับสนุนวิวหลายๆตัวพร้อมกัน หรือสนับสนุนการเขียนโปรแกรมระดับ N-tier เป็นต้น
มีผู้ดัดแปลง MVC ไปใช้หลายรูปแบบ เช่น Swing เรียก MVC2 บางรายใช้ Model-View-Presenter หรือไม่ก็ Model-User Interface แต่หลักการก็ยังคล้ายๆเดิม เพียงแตกต่างที่การติดต่อระหว่างโมเดล วิว คอนโทรลเลอร์ ว่าใครเป็นผู้แจ้งหรือตอบรับการเปลี่ยนแปลงเหตุการณ์ (event notification) หรือการรวม view กับ controller เข้าด้วยกัน รายละเอียดเพิ่มเติม รวมทั้งวิธีการเขียนโปรแกรมตามหลัก MVC คงต้องไปดูลิงค์ข้างล่างครับ
คอนเซ็ปของ MVC
http://java.sun.com/blueprints/patterns/MV...C-detailed.html
http://www.object-arts.com/EducationCentre...erviews/MVC.htm
http://www.cs.indian...ojects/mvc.html
เปรียบเทียบ Classical MVC กับ present MVC framework
http://www.holobloc....vc/classicl.htm

Help














