การใช้การอ้างอิงที่อ่อนแอในการสมัครสมาชิก MVVMCROSS มีข้อดีหลายประการโดยเน้นไปที่การจัดการหน่วยความจำเป็นหลักและหลีกเลี่ยงการรั่วไหลของหน่วยความจำ นี่คือประโยชน์ที่สำคัญ:
1. การป้องกันการรั่วไหลของหน่วยความจำ **
หนึ่งในข้อดีหลักของการใช้การอ้างอิงที่อ่อนแอคือช่วยป้องกันการรั่วไหลของหน่วยความจำ ในรูปแบบการสมัครสมาชิกเหตุการณ์แบบดั้งเดิมหากสมาชิก (เช่นมุมมอง) ไม่ได้ยกเลิกการสมัครจากเหตุการณ์อย่างถูกต้อง (เช่นในรูปแบบมุมมอง) มันสามารถอยู่ในหน่วยความจำได้อย่างถูกต้องแม้หลังจากไม่จำเป็นอีกต่อไป นี่เป็นเพราะแหล่งที่มาของเหตุการณ์ยังคงมีการอ้างอิงที่แข็งแกร่งไปยังสมาชิกป้องกันไม่ให้มันถูกเก็บรวบรวมขยะ การอ้างอิงที่อ่อนแอจะแก้ปัญหานี้โดยอนุญาตให้นักสะสมขยะเรียกคืนหน่วยความจำหากสมาชิกไม่ได้อ้างอิงที่อื่นในแอปพลิเคชันอีกต่อไป [3] [6]2. การจัดการการสมัครสมาชิกแบบง่าย **
การอ้างอิงที่อ่อนแอทำให้การจัดการการสมัครสมาชิกเหตุการณ์ง่ายขึ้น ในแอปพลิเคชันที่ซับซ้อนที่มีแหล่งเหตุการณ์และสมาชิกจำนวนมากการติดตามและการยกเลิกการสมัครด้วยตนเองจากเหตุการณ์อาจกลายเป็นเรื่องยุ่งยาก รูปแบบเหตุการณ์ที่อ่อนแอทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติโดยการลบสมาชิกเมื่อไม่จำเป็นต้องลดความซับซ้อนของการจัดการการสมัครสมาชิก [3]3. การแยก ViewModels และมุมมอง **
ใน MVVMCROSS การใช้การอ้างอิงที่อ่อนแอจะช่วยรักษาความสะอาดระหว่างโมเดลมุมมองและมุมมอง ด้วยการทำให้มั่นใจว่าโมเดลมุมมองไม่ได้มีการอ้างอิงที่แข็งแกร่งไปยังมุมมองคุณป้องกันมุมมองจากการถูกเก็บรักษาไว้โดยไม่จำเป็น decoupling นี้มีความสำคัญสำหรับการรักษาสถาปัตยกรรมที่แข็งแกร่งและปรับขนาดได้เนื่องจากช่วยให้วิวจะได้รับการรวบรวมขยะเมื่อไม่ได้ใช้งานอีกต่อไป [2] [4]4. ความยืดหยุ่นในการจัดการเหตุการณ์ **
การอ้างอิงที่อ่อนแอให้ความยืดหยุ่นในสถานการณ์การจัดการเหตุการณ์ พวกเขาอนุญาตให้ใช้ระบบการส่งข้อความเช่นปลั๊กอิน MVVMcross Messenger ซึ่งต้องอาศัยการอ้างอิงที่อ่อนแอสำหรับการสมัครสมาชิกเหตุการณ์ ความยืดหยุ่นนี้เป็นประโยชน์ในสถานการณ์ที่ไม่ทราบตัวตนของแหล่งเหตุการณ์หรือเมื่อต้องการวิธีการที่มุ่งเน้นข้อความมากขึ้น [5]อย่างไรก็ตามเป็นสิ่งสำคัญที่จะต้องทราบว่าในขณะที่การอ้างอิงที่อ่อนแอเสนอข้อได้เปรียบเหล่านี้พวกเขายังแนะนำความซับซ้อนและปัญหาที่อาจเกิดขึ้นเช่นปัญหา "ซอมบี้" ที่กล่าวถึงในการอภิปรายบางอย่าง สิ่งนี้เกิดขึ้นเมื่อผู้สมัครสมาชิกยังไม่ได้เก็บขยะ แต่ยังคงอ้างอิงอย่างอ่อนแออาจนำไปสู่พฤติกรรมที่ไม่คาดคิดหากตัวจัดการเหตุการณ์ถูกเรียกใช้ [1] แม้จะมีความท้าทายเหล่านี้การอ้างอิงที่อ่อนแอยังคงเป็นเครื่องมือที่มีค่าในการจัดการการสมัครรับข้อมูลเหตุการณ์อย่างมีประสิทธิภาพในแอปพลิเคชัน MVVMcross
การอ้างอิง:[1] https://ladimolnar.com/2015/09/14/the-weak-event-pattern-is-dangerous/
[2] https://stackoverflow.com/questions/19378470/weak-referencing-in-mvvmcross-with-actiont
[3] https://mustafacanyucel.com/blog/blog-22.html
[4] https://gregshackles.com/weak-subscription-gotcha-in-mvvmcross/
[5] https://www.mvvmcross.com/documentation/plugins/messenger
[6] https://learn.microsoft.com/en-us/dotnet/desktop/wpf/events/weak-event-patterns?view=netdesktop-9.0
[7] https://stackoverflow.com/questions/310685/weak-reference-benefits
[8] https://github.com/mvvmcross/mvvmcross/issues/1480