Model-view-controller (MVC) เป็นประเภทของสถาปัตยกรรมซอฟต์แวร์และรูปแบบการออกแบบที่แบ่งองค์ประกอบแต่ละส่วนของโปรแกรมออกเป็นส่วนการทำงานที่กำหนดไว้อย่างดี ในสถาปัตยกรรม model-view-controller โมเดลจะเกี่ยวข้องกับตรรกะของโปรแกรมภายในทั้งหมดที่จัดการบันทึกเรียกคืนและจัดการและคำนวณข้อมูลเป็นอย่างอื่น มุมมองมุมมองมีหน้าที่รับผิดชอบในการแสดงข้อมูลจากโมเดลสำหรับผู้ใช้และยังเป็นวิธีสำหรับผู้ใช้ในการป้อนข้อมูลให้กับโปรแกรม ตัวควบคุมจะรับอินพุตจากมุมมองประเมินหรือประมวลผลเป็นอย่างอื่นและโต้ตอบกับโมเดลเพื่อเปลี่ยนข้อมูลหรือสถานะโปรแกรมซึ่งท้ายที่สุดจะแสดงต่อผู้ใช้ผ่านมุมมอง ถึงแม้ว่าการออกแบบ model-viewer-controller จะเรียกร้องให้โปรแกรมห่อหุ้มการทำงาน แต่ทั้งสามส่วนยังจำเป็นต้องมีปฏิสัมพันธ์กับผู้อื่นในทางใดทางหนึ่งและโดยทั่วไปจะขึ้นอยู่กับอีกฝ่ายหนึ่งในบางแง่มุม
บ่อยครั้งที่รูปแบบ model-view-controller ถูกพบในแอปพลิเคชันที่จัดการส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI) การใช้รูปแบบ MVC องค์ประกอบด้านภาพที่แตกต่างกันของ GUI ได้รับการจัดการโดยมุมมองการบันทึกและการประมวลผลที่ใดและสิ่งที่ผู้ใช้คลิกจัดการโดยคอนโทรลเลอร์และการเปลี่ยนแปลงข้อมูลหรือการโหลดข้อมูลนั้นกระทำโดยตัวแบบ ขึ้นอยู่กับการออกแบบที่แน่นอนของแอปพลิเคชันแต่ละองค์ประกอบของรูปแบบ MVC สามารถมีกลไกในการโต้ตอบกับส่วนประกอบอื่น ๆ เช่นรูปแบบที่สามารถสั่งให้มุมมองรีเฟรชหน้าจอโดยตรงหรือมุมมองที่มีวิธีการบอก คอนโทรลเลอร์กำลังรีเฟรชหน้าจอและไม่ยอมรับอินพุตใหม่ แตกต่างจากรูปแบบการออกแบบบางอย่างที่ใช้วิธีกล่องดำที่เข้มงวดโปรแกรม model-view-controller มีแนวโน้มที่จะมีความยืดหยุ่นมากขึ้นเล็กน้อยถึงแม้ว่าการใช้งานบางอย่างสามารถทำให้โปรแกรม MVC ยากต่อการเปลี่ยนแปลงหรือดีบักแบบแยกส่วน
ในบางกรณีรูปแบบ model-view-controller ไม่จำเป็นต้องมีเพียงหนึ่งในแต่ละองค์ประกอบ ตัวอย่างหนึ่งคือแอปพลิเคชันที่มีหลายมุมมองเช่นจอภาพหลายจอหรือจอแสดงผลที่สามารถเห็นได้บนอุปกรณ์ไคลเอ็นต์หลายเครื่อง มุมมองและตัวควบคุมหลายตัวสามารถใช้ในแอปพลิเคชันที่อนุญาตให้ผู้ใช้หลายคนเข้าถึงฐานข้อมูลซึ่งเป็นการตอบคำถามทั้งหมดในรูปแบบเดียว อย่างไรก็ตามเป็นเรื่องปกติมากขึ้นในการออกแบบระบบที่รักษาอัตราส่วนแบบหนึ่งต่อหนึ่งของส่วนประกอบ
แม้ว่า model-view-controller component จะพึ่งพาซึ่งกันและกัน แต่ก็สามารถปรับเปลี่ยนบางส่วนของระบบที่ใช้รูปแบบ MVC ได้ง่ายกว่ามากหากไม่ใช้รูปแบบใดเลยโดยเฉพาะอย่างยิ่งในกรณีที่ไม่เน้นวัตถุ การใช้งาน หากแอปพลิเคชันใช้การโทรกลับหรือผู้ฟังและผู้สังเกตการณ์เพื่อใช้การโต้ตอบระหว่างส่วนประกอบดังนั้นแต่ละองค์ประกอบสามารถเปลี่ยนแปลงได้โดยไม่กระทบกับอีกสองส่วน ซึ่งหมายความว่าสามารถใช้งาน GUI ใหม่ได้โดยไม่กระทบต่อโมเดลหรือคอนโทรลเลอร์ อย่างไรก็ตามควรสังเกตว่าการเปลี่ยนแปลงขั้นพื้นฐานไปยังระบบ model-view-controller อาจต้องใช้การเข้ารหัสซ้ำเล็กน้อยสำหรับแต่ละองค์ประกอบ


