ฉันได้อ่านเกี่ยวกับ Model View Controller, Model View Presenter, Model View ViewModel เป็นต้นโดยทั่วไปแนวคิดพื้นฐานดูเหมือนจะเข้าใจง่าย: เก็บภาพที่สวยงามและความกล้าหาญทางวิทยาศาสตร์แยกจากกันและงมงายเป็น เป็นไปได้ ไม่ได้รับเนยถั่วลิสงในการออกแบบช็อคโกแลต; ฉันชอบมัน
ปัญหาคือฉันยังคงคลุมเครือเล็กน้อยในส่วนที่สามนั่นคือ ... ไม่ใช่โมเดลหรือมุมมอง ทุกคนดูเหมือนจะมีความคิดของตัวเองว่าจะเรียกมันว่าอะไรควรทำอะไรเหมาะสมอะไรผิดปกติธรรมดา ... และฉันจะพยายามคิดออกเมื่อผู้นำเสนอกลายเป็น ViewModel และเมื่อมุมมองไม่ควร ' อย่าทำอย่างนั้นเพราะนั่นคืองานของผู้นำเสนอและ -
ฉันเที่ยว
แทนที่จะขอให้ใครบางคนอธิบายความแตกต่างระหว่างพวกเขา - เพราะมันทำมาแล้วครั้งแล้วครั้งเล่า (ฉันรู้ว่าฉันอ่านบทความมากกว่าที่ฉันสามารถนับได้) - ฉันอยากรู้อยากเห็นความคิดของ โปรแกรมเมอร์เพียงไม่กี่คนในแบบจำลองที่ฉันได้เดินด้วยกัน
ที่กล่าวว่าสิ่งที่คุณจะจัดประเภทการออกแบบนี้และที่สำคัญกว่าคุณเห็นอะไรเกี่ยวกับเรื่องนี้ที่ชัดดูด? แน่นอนว่าฉันชอบที่จะได้ยินว่าฉันทำได้ดีถ้านี่คือการออกแบบที่มั่นคงอย่างแท้จริง แต่ฉันอยากได้รับคำแนะนำที่หนักแน่นมากกว่าการชม
หมายเหตุ: ฉันจะใช้ "the Bridge" สำหรับส่วนที่สามอันลึกลับของ Model-View-? เพื่อหลีกเลี่ยงคำแนะนำจิตใต้สำนึกของสิ่งที่ "ควร" เป็น
แบบ
- เป็นสิทธิของข้อมูล
- รับข้อมูลเกี่ยวกับการเปลี่ยนแปลงที่ร้องขอจาก Bridge
- มีและดำเนินการตรรกะทั้งหมดสำหรับข้อมูลที่เกี่ยวข้องกับข้อมูลอื่น ๆ
แจ้งบริดจ์เมื่อมีการเปลี่ยนแปลงข้อมูล (สำหรับข้อมูลที่ Bridge แสดงความสนใจ)การแก้ไขข้อความ: อนุญาตให้ผู้สมัครสมาชิกภายนอก (เกี่ยวกับสิ่งที่ไม่รู้) เพื่อตรวจสอบสถานะหรือผลการคำนวณ- ไม่มีความรู้เกี่ยวกับมุมมอง
ดู
- เกี่ยวข้องกับการให้วิธีการดูและจัดการข้อมูลแก่ผู้ใช้
- รับข้อมูลเกี่ยวกับการอัพเดทข้อมูลจาก Bridge
- มีและดำเนินการตรรกะทั้งหมดสำหรับวิธีการนำเสนอข้อมูลและการควบคุมให้กับผู้ใช้
- แจ้งสะพานเมื่อผู้ใช้ทำการกระทำที่ (อาจ) ส่งผลกระทบต่อรูปแบบ
- แจ้งสะพานข้อมูลที่สนใจ
- ไม่มีความรู้เกี่ยวกับตัวแบบ
สะพาน
- เป็นผู้ประสานงานและนักแปลระหว่างรุ่นและมุมมอง
- ทำการเปลี่ยนแปลงการจัดรูปแบบที่เหมาะสมกับข้อมูลที่ส่งผ่านระหว่างรูปแบบและมุมมอง
- เก็บข้อมูลเกี่ยวกับ "ผู้ที่ต้องการรู้ว่าอะไร"
- มีความรู้ทั้งใน Model และ the View
หมายเหตุเพิ่มเติม
- ในโปรแกรมที่ซับซ้อนกว่าปกติจะมีหลายรุ่น ในสถานการณ์นี้โดยทั่วไป Bridge จะทำงานในการประสานงาน / แปลระหว่างหลายรุ่นและทำให้กลายเป็นผู้มีอำนาจในสิ่งที่ protocall / API / การออกแบบแบบจำลองควรถูกสร้างขึ้น (เช่นหากสร้างโปรแกรมเกมไพ่และคุณต้องการสร้างแบบจำลองการสับสำรับทางเลือกคุณควรใช้ Bridge เพื่อกำหนดฟังก์ชั่นที่จำเป็นสำหรับการสื่อสารกับบริดจ์อย่างเหมาะสม)
- ในโปรแกรมอย่างง่ายขนาดเล็กที่มีมุมมองและรูปแบบเพียงหนึ่งเดียวเป็นเรื่องปกติที่ Bridge จะ "สมมติ" ว่าฟังก์ชั่นใดมีให้ใช้งานทั้งสองด้าน อย่างไรก็ตามเมื่อโปรแกรมมีความซับซ้อนมากขึ้นขอแนะนำให้ View (s) และ Model (s) รายงานการทำงานของพวกเขาไปยัง Bridge เพื่อที่จะสามารถหลีกเลี่ยงความไร้ประสิทธิภาพและข้อสันนิษฐานที่ผิดพลาดได้
ฉันคิดว่าเพียงแค่ครอบคลุมมัน โดยทั้งหมดฉันยินดีต้อนรับคำถามใด ๆ ที่คุณอาจมีเกี่ยวกับการออกแบบที่ฉันมักจะใช้และฉันก็สนับสนุนให้คำแนะนำใด ๆ
และเช่นเคยขอบคุณสำหรับเวลาของคุณ