MVC Pattern

posted on 09 Jun 2009 13:21 by happyeverytime in Programming

MVC Pattern

 

            MVC Pattern นั้นเป็น หนึ่งในหลายๆ pattern อ่ะค่ะ สาเหตุที่มดเลือก pattern นี้มานำเสนอก็เพราะว่าเป็น pattern ที่ได้รับความนิยมในการ Design Application ขนาดใหญ่ในปัจจุบัน pattern ในที่นี้ไม่ใช่ pattern ในการ test หรืออะไรนะค่ะ มันคือ pattern ในการเขียน code ค่ะ เรามารู้จัก concept คร่าวๆของ pattern ตัวนี้กันก่อนเลยดีกว่านะค่ะ สำหรับ MVC Pattern ชื่อเต็มๆ ก็คือ Model-View-Controller ซึ่งเป็นรูปแบบการออกแบบระบบ โดยหลักการคือ จะแบ่งระบบที่เราออกแบบเป็น 3 ส่วนประกอบหลัก ๆ คือ Model, View และ Controller โดยที่แต่ละส่วนจะมีความสำพันธ์ดังแผนภาพ

 

 

รูปนี้อ้างอิงมาจาก http://www.zurich.ibm.com/fluid/mvc-multidevice/

 

Model คือ ส่วนของข้อมูล ตัวอย่างเช่น Database ซึ่งหน้าที่ของ Model ไม่มีอะไรไปมากกว่า การเก็บข้อมูลและ การส่งข้อมูลเลยค่ะ

View คือ ส่วนของการแสดงผล เช่นกันค่ะ หน้าที่ของ View ไม่มีไปมากไปกว่าการแสดงผลและ การรอรับคำสั่ง” View ที่เห็นๆกันก็คือ GUIs นั่นแหละค่ะ

Controller ส่วนนี้เป็นส่วนที่เชื่อมการทำงานระหว่าง Model กับ View จะพูดให้ง่ายกว่านั้นก็คือ มันคือ “User Logic หรือ Action Logic” ค่ะ เพราะมันเป็นส่วนควบคุมการทำงานของ User ที่ทำต่อ Application นั่นเอง ว่า User ทำอะไรได้บ้าง แล้ว Application ต้องทำอะไรบ้างเมื่อได้รับ Action นั่นมาแล้ว นั่นคือหน้าที่ของ Controller ค่ะ

 

ข้อดีของการออกแบบระบบด้วย MVC Pattern

1. การออกแบบที่ชัดเจน เมื่อเรากำหนดให้ Model อยู่ในรูปแบบของ Object ในระบบ ส่งผลให้เราสามารถมองภาพระบบโดยรวมได้ชัดเจนมากขึ้นว่า Model ใด สัมพันธ์กับ Model ใดในลักษณะใด รวมไปถึงคำสั่งต่าง ๆ ใน Object ที่เราสามารถเรียกใช้งานได้ จะทำให้เรามองเห็นภาพของพฤติกรรมของ Model นั้น ๆ อีกด้วย

2. การปรับปรุง/แก้ไขได้โดยง่าย เมื่อเราออกแบบตาม MVC Pattern ทำให้เราสามารถปรับปรุง แก้ไขส่วนใด ๆ ได้อย่างง่ายดายโดยที่ไม่กระทบกับส่วนที่เหลือ เนื่องจากทั้ง 3 ส่วนต่างอิสระต่อกัน เพียงเรากำหนด Interface ของแต่ละส่วนให้ชัดเจน และทำการพัฒนา แก้ไข หรือปรับปรุงภายใต้ Interface ที่กำหนดเท่านั้น

3. View ที่หลากหลาย หลังจากที่เราแยก View กับ Model ออกจากกัน ทำให้เราสามารถออกแบบ View ได้หลายรูปแบบ

4. Maintain ระบบได้ง่าย เพราะเราได้ออกแบบระบบที่มีโครงสร้างชัดเจน ทำให้ยืดหยุ่นต่อการเพิ่มเติม รวมไปถึงการนำส่วนใด ๆ กลับมาใช้ซ้ำได้อีกด้วย (Reusability)

ข้อเสีย

            ก็คือว่า การออกแบบระบบด้วย MVC Pattern ค่อนข้างจะซับซ้อน ถ้าเราจะนำมาใช้กับระบบขนาดเล็ก เทียบง่าย ๆ มันก็คงไม่ต่างจากภาษิตที่ว่า ขี่ช้างจับตั๊กแตน

 

 

 

Reference :     http://www.zurich.ibm.com/fluid/mvc-multidevice/
http://blog.chonla.com