คุณใช้ซิงเกิลตัน เพื่อจัดเตรียมอินสแตนซ์ของชั้นเรียนที่ใช้ร่วมกันซึ่งเข้าถึงได้ทั่วโลก คำจำกัดความนี้ไม่ได้มีลักษณะเฉพาะในเอกสารประกอบของ Apple บทความ Wikipedia ที่ฉันเชื่อมโยงด้านบนยังระบุด้วยว่า “การใช้งานรูปแบบซิงเกิลตันต้องให้การเข้าถึงทั่วโลกสำหรับอินสแตนซ์นั้น”
ทำไมถึงใช้ซิงเกิลตันใน Swift
Singleton คือ รูปแบบการออกแบบที่สร้างสรรค์ ซึ่งทำให้แน่ใจว่ามีเพียงวัตถุประเภทเดียวเท่านั้นที่มีอยู่และให้การเข้าถึงจุดเดียวสำหรับรหัสอื่น ๆ Singleton มีข้อดีและข้อเสียเกือบเท่าตัวแปรทั่วโลก แม้ว่าจะมีประโยชน์มาก แต่ก็ทำให้โมดูลของโค้ดของคุณพัง
เมื่อใดที่คุณไม่ควรใช้ซิงเกิลตัน
สถานการณ์เดียวที่คุณควรพิจารณาซิงเกิลตันคือเมื่อมีข้อมูลทั่วโลกมากกว่าหนึ่งอินสแตนซ์ จริงๆ แล้วจะเป็น ข้อผิดพลาดในการเข้าถึงลอจิคัลหรือฮาร์ดแวร์.
ลิงก์ที่เกี่ยวข้อง:
- ความเปราะบางที่เรียกโดย Global State และ Singletons
- การพึ่งพาการฉีดเพื่อหลีกเลี่ยงคนโสด
- โรงงานและซิงเกิลตัน
ซิงเกิลตันอะไรดี
ควรใช้ซิงเกิลตัน เมื่อจัดการการเข้าถึงทรัพยากรที่แชร์โดยแอปพลิเคชันทั้งหมด และอาจเป็นอันตรายได้หากมีหลายอินสแตนซ์ของคลาสเดียวกัน ตรวจสอบให้แน่ใจว่าการเข้าถึงเธรดทรัพยากรที่ใช้ร่วมกันอย่างปลอดภัยเป็นตัวอย่างที่ดีอย่างหนึ่งที่แสดงให้เห็นว่ารูปแบบประเภทนี้มีความสำคัญอย่างไร
ซิงเกิลตันไม่ดีสวิฟท์หรือเปล่า
Singletons ไม่ได้แย่ในระดับสากล แต่ในหลาย ๆ สถานการณ์ ปัญหาเหล่านี้มาพร้อมกับชุดของปัญหาที่สามารถหลีกเลี่ยงได้โดยการสร้างความสัมพันธ์ที่ชัดเจนยิ่งขึ้นระหว่างวัตถุของคุณและโดยใช้การพึ่งพา การฉีด