Technology

[Dev Tip] MVC คืออะไร ?

By Arnon Puitrakul - 01 พฤศจิกายน 2015

[Dev Tip] MVC คืออะไร ?

ถ้าพูดถึง MVC หลาย ๆ คนน่าจะเคยได้ยินกันมาก่อนแล้ว แต่สำหรับคนที่ไม่เคยได้ยิน ไม่เป็นไร วันนี้เราจะมาดูกันว่า MVC มันคืออะไร และ ทำไมเราถึงต้องใช้ MVC

MVC คืออะไร ?

ก่อนอื่นต้องขอท้าวความกลับไปตอนที่เราเรียน OOP ก่อน ตอนนั้นเราก็เรียนกันว่า เออ OOP นะ มันคือการเขียนโปรแกรมโดยแบ่งทุก ๆ อย่างเป็น Object ย่อย ๆ ที่ทำหน้าที่หลักอย่างเดียว แต่สุดท้ายแล้ว Object ทุกตัวที่เราเขียนออกมา มันก็ทำงานออกมาเป็นโปรแกรมเดียว แต่ในสถานการณ์จริง ๆ ถามว่า เราจะแยกอะไร อันไหนบาง ออกมาเป็น Object แยก โน้นนี่นั่น เพราะฉะนั้นแต่ล่ะคนแยก ออกมา อาจจะใช้มาตราฐานในการแยกไม่เหมือนกัน MVC เลยเข้ามาช่วยเรา โดยมันให้มาตราฐานกับเราในการแยกแต่ล่ะส่วนของโปรแกรมเราออกมาเป็น Object นั่นคือ แบ่งเป็น 3 ส่วน คือ Model , View และ Controller

  • Model คือ ส่วนที่เราเอาไว้ใช้ทำงานกับ ข้อมูลดิบ ๆ มันจะทำงานเมื่อ Controller ต้องการข้อมูล มันก็จะดึงข้อมูลส่งไปให้ Controller ไปจัดการ ถ้านึกภาพเล่น ๆ ก็เหมือนกับ บรรณารักษ์ ที่คอยเฝ้า, จัดเรียง และสามารถค้นหาหนังสือ ที่เราต้องการได้
  • Views คือ พริตตี้สาว สวย หมวย ที่คอยเป็นหน้า เป็นตาให้กับโปรแกรมเรา บางครั้ง เราก็จะเรียกมันว่า User Interface เพราะมันเป็นส่วนที่ใช้ติดต่อกับผู้ใช้นั่นเอง
  • Controller คือ กรรมกรหนุ่มล่ำบึก ที่คอยเป็น เบ้ และ มันสมอง ให้กับโปรแกรม โดยส่วนนี้จะรับหน้าที่ในการจัดการโปรแกรมเรา เช่นการประมวลผล หรือรับข้อมูลเป็นต้น และเป็นส่วนที่เราจะเก็บพวก Logic ของโปรแกรมเราไว้ในนี้เลย

Flow การทำงาน คร่าว ๆ

mvc_model

ให้เรานึกถึงว่า เวลาเราไปกินอาหาร ในร้านอาหารเลย ก่อนอื่น เราก็ต้องสั่งอาหารกันก่อน ฉะนั้นคนที่มารับ Order เราก็คือ Views ของโปรแกรมเรานั่นเอง หลังจากที่ พนักงานรับ Order เราไปแล้ว ก็จะเอา Order เราไปให้เชฟที่ทำอาหาร ในที่นี้เชฟ เราก็คือ Controller ที่ค่อยสั่งให้ลูกน้องทำอาหาร แต่ก่อนหน้านั้น เชฟก็ต้องรู้ว่า ไอ้ที่คนรับ Order จดมามันคืออะไร ก็ต้องไปเปิด เมนู ดูนิดนึง ในที่นี้เมนู ก็คือ Model นั่นเอง จากนั้นเชฟ ก็จะทำอาหาร ออกมา และให้ View หรือคนเสริฟอาหาร เอาอาการไปเสริฟที่โต๊ะของ User นั่นเอง และก็จบ ทำนองนี้แหละ
อาจจะ งง ว่าเล่าอะไรมา เอาคร่าว ๆ คือ เราเป็น User ใช้โปรแกรม ทีนี้เวลาเราใช้โปรแกรม หน้าตาของโปรแกรมเรามันก็คือ View จากนั้นมันก็จะไปเรียก Controller เพื่อให้ Controller ตัดสินใจว่าจะทำอะไรต่อ อาจจะต้องไปเรียกฐานข้อมูล หรือแหล่งข้อมูลต่าง ๆ (Model) และส่งกลับไปให้ View อีกครั้งนึง

หลักการที่โคตรสำคัญ

มีเรื่องนึง ผมเจอบ่อยมาก สำหรับมือใหม่ ๆ นั่นคือ "แกชอบข้าม Hierarchy!!" หลักการสำคัญใน MVC เลยคือ Model จะไม่สามารถ เรียก Method ของ View หรือ Controller ได้โดยตรง เพราะว่า Model จะไม่มีตัวแปรที่เก็บ Object ของ View และ Controller ไว้ แต่ สามารถคุยกันได้โดยใช้ Object พวก Observer ที่ Implements มาจาก Observer Interface และตัว Model จะแจ้งข้อมูลโดยการส่ง Event Notification กลับไปหา Observer ตัวอื่น ๆ ถ้า Observer นั้นเป็น View มันก็จะรับข้อมูลมา Update ข้อมูลในตัวเองใหม่ กลับกัน View เองก็ไม่เห็น Controller เหมือนกัน ทำได้แค่ส่ง Event Notification ไปหา Observer ที่เป็นของ Controller ตัวนั้น ๆ เท่านั้นเอง ที่เราต้องทำแบบนี้ เพราะว่า MVC นั้น แยก ส่วน ของ Model และ View ออกจากกัน

ทำไม ต้องเปลี่ยนมาใช้ MVC

หลาย ๆ คนที่ไม่ได้ออกแบบโปรแกรมได้ดีสักเท่าไหร่ พอเขียน ๆ ไปเรื่อย ๆ โปรแกรมของเราก็ใหญ่ขึ้นเรื่อย ๆ ผลก็คือ ไฟล์อะไรมั่วไปหมด จัดลำดับโค๊ตก็ไม่เรียบร้อย โค๊ตก็ยาว อ่านก็ยาก ยิ่งถ้าทำงานพร้อมกันหลาย ๆ คนแก้โปรแกรมกันที รับรอง ธนูปักหัวเข่า และได้ลงไปดิ้น กองกับพื้น ก่อนจะแก้โปรแกรมแน่นอน ฉะนั้นการที่เราออกแบบโปรแกรมของเราให้เป็น MVC ก็ทำให้เราทำงาน ทั้งคนเดียว และกับคนอื่น ได้ง่ายขึ้นเยอะเลย จะได้ไม่ต้องโดนธนูปักหัวเข่าและนอนกลิ้งไปกับพื้นก่อนที่จะแก้โปรแกรม

Read Next...

Direct Air Capture เทคโนโลยีแห่งอนาคตสู่ Negative Net Carbon

Direct Air Capture เทคโนโลยีแห่งอนาคตสู่ Negative Net Carbon

เมื่ออาทิตย์ก่อน เราเห็นข่าวเรื่องการเปิดใช้งานเครื่องดักจับก๊าชเรือนกระจกที่มีขนาดใหญ่ที่สุดในโลก ณ วันนี้ชื่อว่า Mammoth ที่มีขนาดใหญ่กว่าเครื่องก่อนหน้าถึง 10 เท่า วันนี้เราจะมาเล่าให้อ่านกันว่าการทำ Direct Air Capture เขาทำกันยังไง ทำไมเทคโนโลยีของเจ้านี้ถึงน่าสนใจ...

ลองกันอีกสักตั้ง iPad Pro ใช้แทนคอมพิวเตอร์ได้มั้ย

ลองกันอีกสักตั้ง iPad Pro ใช้แทนคอมพิวเตอร์ได้มั้ย

เมื่อ 3 ปีก่อน เรามีความพยายามที่จะใช้ iPad Pro เครื่องเดิมแทนคอมพิวเตอร์ ไหน ๆ ตอนนี้เราเปลี่ยน iPad Pro ใหม่แล้ว เราจะมาลองกันอีกสักตั้งว่า เมื่อเวลาผ่านไป มันใช้งานจริงได้มากขึ้นหรือไม่...

ทำไม iPad ยังเป็น iPad ไม่เป็น Mac

ทำไม iPad ยังเป็น iPad ไม่เป็น Mac

ตั้งแต่ iPad Pro M4 และ iPad Air M2 เปิดตัวและเริ่มจำหน่ายออกไป Reviewer หลายคนเริ่มมองเห็นแล้วว่า ปัญหาจริง ๆ ของ iPad ในรอบหลายปีที่ผ่านมา ไม่ได้เกิดจาก iPad แต่เกิดจาก iPadOS บางเจ้าบอกว่า อยากให้เอา macOS มาใส่ด้วยซ้ำ มันยังไงกันนะ วันนี้เราจะมาเล่าประเด็นและความเห็นจากเราให้ให้อ่านกัน...

Microinverter ต่างจาก String Inverter อย่างไร เลือกแบบไหนดีกว่ากัน

Microinverter ต่างจาก String Inverter อย่างไร เลือกแบบไหนดีกว่ากัน

หลังจากเราเขียนเรื่อง Solar Cell ไปมีคนถามเข้ามาอยู่ว่า ถ้าจะเลือกติดตั้ง Solar ระหว่างการใช้ระบบ String Inverter กับ Microinverter เราจะเลือกตัวไหนดี วันนี้เราจะมาเล่าเปรียบเทียบให้อ่านกันว่าแบบไหน น่าจะเหมาะกับใคร...