JavaRush /จาวาบล็อก /Random-TH /เหตุใดจึงต้องมีซิงเกิลตัน?
KarmaHacker
ระดับ
Новосибирск

เหตุใดจึงต้องมีซิงเกิลตัน?

เผยแพร่ในกลุ่ม
ขณะนี้ฉันกำลังแก้ไขปัญหาใหญ่ที่ระดับ 27 ที่นั่นเราถูกขอให้สร้างคลาส StatisticManager และทำให้เป็นซิงเกิลตัน ได้ไม่มีปัญหา! ต่อมาในคลาสอื่นๆ ของโปรแกรม ฉันต้องเรียกใช้เมธอดของ StatistcManager และที่นี่ฉันเริ่มพบกับช่วงเวลาที่น่ารำคาญเล็กๆ น้อยๆ ฉันต้องเขียนตัวแปรอ้างอิง StatisticManager statisticManager = StatisticManager.getInstance(); statisticManager.method(); หรือดังนี้: StatisticManager.getInstance().method(); นั่นเป็นตัวอักษรพิเศษจำนวนมาก! มันจะง่ายกว่ามากถ้าจะทำให้คลาสคงที่และเขียนแบบนี้: StatisticManager.method(); ฉันคิดว่าบางทีซิงเกิลตันอาจมีบางอย่างที่ได้เปรียบจากคลาสคงที่ ฉันอ่านบทความเกี่ยวกับฮาเบรและมีแต่ทำให้ฉันสงสัยมากขึ้นเท่านั้น อย่างน้อยในงานนี้ซิงเกิลตันก็ซ้ำซ้อน จนถึงตอนนี้ ฉันเห็นการใช้งานเพียงครั้งเดียวสำหรับซิงเกิลตัน - หากเราต้องการประหยัดทรัพยากรและสร้างอ็อบเจ็กต์ไม่ใช่ในทันที แต่บางครั้งในภายหลังเมื่อเราต้องการมัน ในกรณีอื่นๆ คลาสแบบคงที่ก็ใช้ได้ พวกเขาเขียนบางอย่างเกี่ยวกับมรดกที่Habréด้วย แต่ฉันแทบจะจินตนาการถึงสถานการณ์เช่นนี้ไม่ได้และอาจจะไม่บ่อยนักเช่นกัน หากฉันผิดโปรดแก้ไขฉันด้วย ฉันแค่อยากจะเข้าใจหลักการออกแบบให้ดีขึ้น และอาจจะช่วยให้คนอื่นเข้าใจได้ :)
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION