เนื้อหานี้เป็นส่วนหนึ่งของชุด "ข้อมูลเบื้องต้นเกี่ยวกับการพัฒนาองค์กร" บทความก่อนหน้านี้:
ในเนื้อหานี้เราจะแนะนำให้คุณรู้จักกับ MVC เรามาพูดถึงว่า MVC คืออะไร สัมผัสประวัติความเป็นมาของการสร้างสรรค์ ทำความเข้าใจแนวคิดหลักและแนวคิดที่มีอยู่ใน MVC พิจารณาทีละขั้นตอนวิธีแยกแอปพลิเคชันออกเป็นโมดูล Model, View, Controller และเขียนแอปพลิเคชันเว็บขนาดเล็กด้วย Spring-Boot และการใช้ Spring-MVC เป็นตัวอย่าง มาดูกันว่าข้อมูลถูกถ่ายโอนจากโค้ด Java ไปยังหน้า html อย่างไร เพื่อทำความเข้าใจเนื้อหานี้ คุณต้องคุ้นเคยกับรูปแบบการออกแบบ โดยเฉพาะผู้สังเกตการณ์และส่วนหน้า ทำความคุ้นเคยกับคำขอและการตอบกลับ HTTP เข้าใจพื้นฐานของ html รู้ว่าคำอธิบายประกอบคืออะไรใน Java นั่งเอนหลัง ชงชา เตรียมของหวาน สลัด อาหารจานหลักและอาหารจานแรก เราเริ่ม.
จากทั้งหมดนี้เราสามารถสรุปข้อสรุปเชิงตรรกะได้อย่างสมบูรณ์ ระบบที่ซับซ้อนจำเป็นต้องแบ่งออกเป็นโมดูล ให้เราอธิบายสั้น ๆ ถึงขั้นตอนในการบรรลุการแยกดังกล่าว
ดังนั้นเราจึงมีแอปพลิเคชันของสามโมดูลที่เรียกว่า Model, View และ Controller สรุป:
- เกี่ยวกับเครือข่าย
- เกี่ยวกับสถาปัตยกรรมซอฟต์แวร์
- เกี่ยวกับโปรโตคอล HTTP/HTTPS ;
- เกี่ยวกับพื้นฐาน Maven ;
- เกี่ยวกับเซิร์ฟเล็ต (เรากำลังเขียนเว็บแอปพลิเคชันธรรมดา) ;
- เกี่ยวกับคอนเทนเนอร์เซิร์ฟเล็ต
ประวัติความเป็นมาของเอ็มวีซี
แนวคิดสำหรับ MVC ได้รับการออกแบบโดย Trygve Reenskaug ในขณะที่ทำงานที่ Xerox PARC ในช่วงปลายทศวรรษที่ 70 ในสมัยนั้น การทำงานกับคอมพิวเตอร์เป็นไปไม่ได้หากไม่มีวุฒิการศึกษาและการศึกษาเอกสารจำนวนมากอย่างต่อเนื่อง ปัญหาที่ Reenskaug แก้ไขร่วมกับกลุ่มนักพัฒนาที่แข็งแกร่งมากคือการลดความซับซ้อนของการโต้ตอบของผู้ใช้โดยเฉลี่ยกับคอมพิวเตอร์ จำเป็นต้องสร้างเครื่องมือที่ในอีกด้านหนึ่งจะเรียบง่ายและเข้าใจได้อย่างมาก และในอีกด้านหนึ่งจะทำให้สามารถจัดการคอมพิวเตอร์และแอปพลิเคชันที่ซับซ้อนได้ Reenskaug ทำงานในทีมที่พัฒนาคอมพิวเตอร์พกพา "สำหรับเด็กทุกวัย" - Dynabook รวมถึงภาษา SmallTalk ภายใต้การนำของ Alan Kay ในตอนนั้นเองที่แนวคิดของอินเทอร์เฟซที่เป็นมิตรได้ถูกวางลง งานของ Reenskaug กับทีมของเขามีอิทธิพลอย่างมากต่อการพัฒนาด้านไอที ให้เรานำเสนอข้อเท็จจริงที่น่าสนใจที่ไม่เกี่ยวข้องโดยตรงกับ MVC แต่แสดงให้เห็นถึงความสำคัญของการพัฒนาเหล่านั้น ในปี 2550 หลังจากการนำเสนอ Apple iPhone Alan Kay กล่าวว่า “เมื่อ Macintosh เปิดตัว Newsweek ก็ถามว่าฉันคิดอย่างไร ฉันพูดว่า: นี่เป็นคอมพิวเตอร์ส่วนบุคคลเครื่องแรกที่ควรค่าแก่การวิจารณ์ หลังจากการนำเสนอ Steve Jobs เข้ามาถามว่า iPhone คุ้มค่าต่อการวิจารณ์หรือไม่? และฉันบอกว่าให้ทำให้มันห้าคูณแปดนิ้วแล้วคุณจะพิชิตโลก” สามปีต่อมา ในวันที่ 27 มกราคม 2010 Apple ได้เปิดตัว iPad ขนาด 9.7 นิ้ว นั่นคือ Steve Jobs ทำตามคำแนะนำของ Alan Kay แทบจะเป็นตัวอักษรเลย โครงการที่ Rennskaug ทำอยู่กินเวลานานถึง 10 ปี และการตีพิมพ์ครั้งแรกเกี่ยวกับ MVC จากผู้สร้างก็ถูกตีพิมพ์ในอีก 10 ปีต่อมา Martin Fowler ผู้เขียนหนังสือและบทความเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์หลายเล่มกล่าวว่าเขาเรียนรู้ MVC จาก SmallTalk เวอร์ชันที่ใช้งานจริง เนื่องจากไม่มีข้อมูลเกี่ยวกับ MVC จากแหล่งข้อมูลหลักมาเป็นเวลานาน รวมถึงด้วยเหตุผลอื่น ๆ หลายประการ การตีความแนวคิดนี้ที่แตกต่างกันจำนวนมากจึงปรากฏขึ้น เป็นผลให้หลายคนมองว่า MVC เป็นโครงร่างหรือรูปแบบการออกแบบ โดยทั่วไปแล้ว MVC เรียกว่ารูปแบบคอมโพสิตหรือการรวมกันของหลายรูปแบบที่ทำงานร่วมกันเพื่อปรับใช้แอปพลิเคชันที่ซับซ้อน แต่ในความเป็นจริง ตามที่กล่าวไว้ข้างต้น MVC เป็นกลุ่มของแนวคิด/หลักการ/แนวทางทางสถาปัตยกรรมเป็นหลัก ที่สามารถนำไปใช้ได้หลากหลายรูปแบบโดยใช้รูปแบบต่างๆ... ต่อไป เราจะพยายามดูแนวคิดหลักที่ฝังอยู่ในแนวคิด MVCMVC คืออะไร: แนวคิดและหลักการพื้นฐาน
- VC คือชุดแนวคิดและหลักการทางสถาปัตยกรรมสำหรับการสร้างระบบข้อมูลที่ซับซ้อนด้วยอินเทอร์เฟซผู้ใช้
- MVC เป็นตัวย่อที่ย่อมาจาก Model-View-Controller

ขั้นตอนที่ 1: แยกตรรกะทางธุรกิจของแอปพลิเคชันออกจากอินเทอร์เฟซผู้ใช้
แนวคิดหลักของ MVC คือแอปพลิเคชันใด ๆ ที่มีอินเทอร์เฟซผู้ใช้สามารถแบ่งออกเป็น 2 โมดูลในการประมาณครั้งแรก: โมดูลที่รับผิดชอบในการใช้ตรรกะทางธุรกิจของแอปพลิเคชันและอินเทอร์เฟซผู้ใช้ โมดูลแรกจะใช้ฟังก์ชันหลักของแอปพลิเคชัน โมดูลนี้จะเป็นแกนหลักของระบบ ซึ่งมีการนำโมเดลโดเมนแอปพลิเคชันไปใช้ ในแนวคิด MVC โมดูลนี้จะเป็นตัวอักษร M ของเรานั่นคือ แบบอย่าง. โมดูลที่สองจะใช้อินเทอร์เฟซผู้ใช้ทั้งหมด รวมถึงการแสดงข้อมูลแก่ผู้ใช้และตรรกะของการโต้ตอบของผู้ใช้กับแอปพลิเคชัน วัตถุประสงค์หลักของการแยกนี้คือเพื่อให้แน่ใจว่าแกนกลางของระบบ (แบบจำลองในคำศัพท์ MVC) สามารถพัฒนาและทดสอบได้อย่างอิสระ สถาปัตยกรรมแอปพลิเคชันหลังจากการแบ่งดังกล่าวจะมีลักษณะดังนี้:
ขั้นตอนที่ 2 ใช้รูปแบบ Observer เพื่อให้โมเดลมีความเป็นอิสระมากยิ่งขึ้น รวมถึงการซิงโครไนซ์อินเทอร์เฟซผู้ใช้
ที่นี่เราติดตาม 2 เป้าหมาย:- บรรลุความเป็นอิสระของโมเดลมากยิ่งขึ้น
- ประสานส่วนต่อประสานกับผู้ใช้
ขั้นตอนที่ 3 แบ่งอินเทอร์เฟซออกเป็น View และ Controller
เรายังคงแบ่งแอปพลิเคชันออกเป็นโมดูลต่อไป แต่ในระดับที่ต่ำกว่าของลำดับชั้น ในขั้นตอนนี้ อินเทอร์เฟซผู้ใช้ (ซึ่งแยกออกเป็นโมดูลแยกต่างหากในขั้นตอนที่ 1) จะถูกแบ่งออกเป็นมุมมองและตัวควบคุม เป็นการยากที่จะวาดเส้นแบ่งที่ชัดเจนระหว่างมุมมองและตัวควบคุม ถ้าเราบอกว่ามุมมองคือสิ่งที่ผู้ใช้เห็น และตัวควบคุมเป็นกลไกที่ผู้ใช้สามารถโต้ตอบกับระบบได้ ก็จะมีความขัดแย้งอยู่บ้าง การควบคุม เช่น ปุ่มบนเว็บเพจหรือแป้นพิมพ์เสมือนบนหน้าจอโทรศัพท์ เป็นส่วนหนึ่งของคอนโทรลเลอร์โดยพื้นฐานแล้ว แต่ผู้ใช้จะมองเห็นได้พอๆ กับส่วนใดๆ ของมุมมอง ที่นี่เรากำลังพูดถึงเพิ่มเติมเกี่ยวกับการแบ่งหน้าที่ งานหลักของอินเทอร์เฟซผู้ใช้คือเพื่อให้แน่ใจว่าผู้ใช้โต้ตอบกับระบบ ซึ่งหมายความว่าอินเทอร์เฟซมีเพียง 2 ฟังก์ชันเท่านั้น:- แสดงและแสดงข้อมูลเกี่ยวกับระบบแก่ผู้ใช้ได้อย่างสะดวก
- ป้อนข้อมูลและคำสั่งผู้ใช้เข้าสู่ระบบ (ส่งไปยังระบบ)

- ตามหลักการของ MVC ระบบจะต้องแบ่งออกเป็นโมดูล
- โมดูลที่สำคัญและเป็นอิสระที่สุดควรเป็นโมเดล
- โมเดลคือแกนหลักของระบบ คุณต้องมีความสามารถในการพัฒนาและทดสอบโดยไม่ขึ้นอยู่กับอินเทอร์เฟซ
- ในการดำเนินการนี้ ในขั้นตอนแรกของการแยกระบบ คุณจะต้องแบ่งออกเป็นโมเดลและอินเทอร์เฟซ
- ต่อไป เมื่อใช้รูปแบบ Observer เราจะเสริมความแข็งแกร่งให้กับโมเดลด้วยความเป็นอิสระและได้รับการซิงโครไนซ์อินเทอร์เฟซผู้ใช้
- ขั้นตอนที่สามคือการแบ่งอินเทอร์เฟซออกเป็นคอนโทรลเลอร์และมุมมอง
- สิ่งที่จำเป็นในการป้อนข้อมูลจากผู้ใช้เข้าสู่ระบบก็คือเข้าสู่คอนโทรลเลอร์
- ทุกสิ่งที่ส่งข้อมูลออกจากระบบไปยังผู้ใช้อยู่ในสายตา
เล็กน้อยเกี่ยวกับความสัมพันธ์ระหว่างมุมมองกับตัวควบคุมและโมเดล
เมื่อผู้ใช้ป้อนข้อมูลผ่านตัวควบคุม ผู้ใช้จะทำการเปลี่ยนแปลงโมเดล อย่างน้อยผู้ใช้ก็ทำการเปลี่ยนแปลงข้อมูลโมเดล เมื่อผู้ใช้ได้รับข้อมูลผ่านองค์ประกอบอินเทอร์เฟซ (ผ่านมุมมอง) ผู้ใช้จะได้รับข้อมูลเกี่ยวกับข้อมูลโมเดล สิ่งนี้เกิดขึ้นได้อย่างไร? View และ Controller โต้ตอบกับโมเดลอย่างไร ท้ายที่สุดแล้ว เป็นไปไม่ได้ที่คลาส View จะใช้วิธีการของคลาส Model โดยตรงในการอ่าน/เขียนข้อมูล ไม่เช่นนั้นจะไม่มีคำถามเกี่ยวกับความเป็นอิสระของ Model โมเดลแสดงถึงชุดคลาสที่เชื่อมต่อกันอย่างแน่นหนา ซึ่งในทางที่ดีทั้ง View และ Controller ไม่ควรสามารถเข้าถึงได้ ในการเชื่อมต่อโมเดลกับมุมมองและคอนโทรลเลอร์ จำเป็นต้องใช้รูปแบบการออกแบบ Facade ส่วนหน้าของโมเดลจะเป็นเลเยอร์เดียวกันระหว่างโมเดลและอินเทอร์เฟซ ซึ่ง View รับข้อมูลในรูปแบบที่สะดวก และผู้ควบคุมจะเปลี่ยนข้อมูลโดยการเรียกวิธีการส่วนหน้าที่จำเป็น ในท้ายที่สุดทุกอย่างจะมีลักษณะดังนี้:
GO TO FULL VERSION