รูปแบบการออกแบบ: Singleton ใน Java

เผยแพร่แล้ว: 2021-11-13

Design Patterns มีประโยชน์สำหรับโปรแกรมเมอร์เมื่อพวกเขาต้องการใช้แนวทางปฏิบัติที่ดีที่สุดในการพัฒนาซอฟต์แวร์เชิงวัตถุ รูปแบบการออกแบบสามารถเข้าใจได้เช่นเดียวกับโซลูชันที่ได้รับการพิสูจน์และทดลองและทดสอบแล้วสำหรับการแก้ปัญหาการออกแบบในมือ Design Systems อธิบายปัญหา แนวทางแก้ไข เมื่อใดควรใช้โซลูชัน และผลที่ตามมา ในทางหนึ่ง รูปแบบการออกแบบสามารถถูกมองว่าเป็นเทมเพลตต่างๆ ที่นักพัฒนาซอฟต์แวร์สามารถใช้ได้เมื่อพวกเขากำลังแก้ปัญหาการออกแบบเชิงวัตถุที่เฉพาะเจาะจง

คุณลักษณะบางอย่างของการใช้รูปแบบการออกแบบใน Java เมื่อเปรียบเทียบกับการเขียนโค้ดตั้งแต่เริ่มต้น ได้แก่:

  • รูปแบบการออกแบบถูกกำหนดและนำไปใช้แล้ว เป็นผลให้พวกเขาให้แนวทางมาตรฐานในการแก้ปัญหาซ้ำซาก ในแง่นั้น มันช่วยให้โปรแกรมเมอร์ประหยัดเวลาและความพยายามได้มาก
  • การใช้ Design Patterns ช่วยให้มั่นใจว่าโค้ดของคุณสามารถนำกลับมาใช้ใหม่ได้ ซึ่งจะทำให้โค้ด Java ของคุณมีความสามารถในการบำรุงรักษาและความทนทานสูง ทั้งหมดนี้จะช่วยลดต้นทุนรวมในการเป็นเจ้าของ (TCO) ของซอฟต์แวร์ที่มีอยู่
  • รูปแบบการออกแบบทำให้โค้ดอ่านและเข้าใจได้ง่าย ซึ่งนำไปสู่การสื่อสารที่รวดเร็วขึ้นและการพัฒนาซอฟต์แวร์ที่ราบรื่น

ภาษาการเขียนโปรแกรม Java นำเสนอรูปแบบการออกแบบที่หลากหลายสำหรับโปรแกรมเมอร์และนักพัฒนา ซึ่งสามารถแบ่งออกกว้างๆ ได้เป็นสามประเภท:

  • รูปแบบการออกแบบที่สร้างสรรค์
  • รูปแบบการออกแบบโครงสร้าง
  • รูปแบบการออกแบบพฤติกรรม

รูปแบบทั้งหมดเหล่านี้ใช้สำหรับกรณีการใช้งานและวัตถุประสงค์ที่แตกต่างกัน ในบทความนี้ เราจะมาพูดถึง Design Pattern ชนิดหนึ่งใน Java – Singleton Design Pattern ซึ่งอยู่ในหมวด Creational Design Patterns

สารบัญ

รูปแบบการออกแบบซิงเกิลตันใน Java

Singleton Design Pattern อยู่ในหมวด Creational Design Pattern ช่วยให้มั่นใจว่าคลาสมีเพียงหนึ่งอินสแตนซ์ โดยให้อินสแตนซ์นี้มีจุดเชื่อมต่อส่วนกลาง ในการทำเช่นนั้น Singleton Design Pattern จะแก้ปัญหาสองปัญหาพร้อมกัน ซึ่งรวมถึง:

1. ทำให้แน่ใจว่าคลาสที่กำหนดมีเพียงหนึ่งอินสแตนซ์

นี่เป็นสิ่งสำคัญที่จะต้องพิจารณา โดยเฉพาะอย่างยิ่งเมื่อทำงานกับทรัพยากรที่ใช้ร่วมกัน เช่น ฐานข้อมูลหรือไฟล์ ลองนึกภาพว่าคุณสร้างวัตถุ แต่หลังจากนั้นไม่นานก็ตัดสินใจสร้างวัตถุใหม่ ในรูปแบบ Singleton Design Pattern แทนที่จะได้รับวัตถุใหม่ คุณจะได้แบบที่คุณสร้างไว้แล้ว ด้วยวิธีนี้ รูปแบบการออกแบบนี้จะช่วยให้แน่ใจว่าไม่มีความซ้ำซ้อนของอ็อบเจ็กต์ และคลาสมีเพียงอินสแตนซ์เดียวเท่านั้น ลักษณะการทำงานนี้เป็นไปไม่ได้ที่จะทำซ้ำกับคอนสตรัคเตอร์เนื่องจากการเรียกคอนสตรัคเตอร์ต้องส่งคืนอ็อบเจ็กต์ใหม่เสมอ

2. จัดเตรียมจุดเชื่อมต่อส่วนกลางไปยังอินสแตนซ์เฉพาะ

ตัวแปรส่วนกลางที่คุณใช้ในการจัดเก็บวัตถุที่จำเป็นนั้นค่อนข้างสะดวก นอกจากนี้ยังไม่ปลอดภัยเท่าๆ กัน เนื่องจากโค้ดใดๆ ก็ตามมีอำนาจในการเขียนทับเนื้อหาของตัวแปรส่วนกลางของคุณ ซึ่งนำไปสู่โค้ดที่ผิดพลาดสำหรับคุณ Singleton Patterns ให้คุณเข้าถึงอ็อบเจ็กต์ต่างๆ ได้จากทุกที่ในโปรแกรม เช่นเดียวกับตัวแปรส่วนกลาง อย่างไรก็ตาม ไม่เหมือนกับตัวแปรส่วนกลาง รูปแบบ Singleton จะปกป้องอินสแตนซ์นั้นจากการถูกเขียนทับโดยโปรแกรมอื่น

ปัจจุบัน Singleton Design Pattern ถูกใช้อย่างแพร่หลายและแพร่หลายมากจนโปรแกรมเมอร์อาจเรียกบางอย่างว่า Singleton แม้ว่าจะแก้ปัญหาได้เพียงปัญหาเดียว การใช้งาน Singleton Design Patterns ทั้งหมดมีสองขั้นตอนที่เหมือนกัน:

  • ทำให้คอนสตรัคเตอร์เริ่มต้นเป็นแบบส่วนตัวเพื่อป้องกันไม่ให้คลาสและอ็อบเจ็กต์อื่นใช้ตัวดำเนินการใหม่กับคลาสซิงเกิลตัน
  • การสร้างวิธีการสร้างแบบคงที่เพื่อทำหน้าที่เป็นตัวสร้าง เมธอดนี้จึงเรียกคอนสตรัคเตอร์ส่วนตัวเพื่อสร้างอ็อบเจ็กต์และบันทึกลงในฟิลด์สแตติก การเรียกใช้เมธอดเฉพาะนี้ทั้งหมดจะส่งคืนอ็อบเจ็กต์ที่แคชไว้

การทำงานของรัฐบาลเป็นตัวอย่างที่ดีเยี่ยมในชีวิตจริงในการทำความเข้าใจว่า Singleton Design Patterns ทำงานอย่างไร โดยไม่คำนึงถึงอัตลักษณ์ส่วนบุคคลของบุคคลที่ประกอบเป็นรัฐบาล ตำแหน่ง "รัฐบาลของ X" เป็นจุดเข้าถึงระดับโลกที่ระบุกลุ่มคนที่กำลังพูดถึง

การใช้ Singleton Design Pattern ใน Java

โปรดปฏิบัติตามรายการขั้นตอนต่อไปนี้เพื่อใช้ Singleton Design Pattern ของคุณเองใน Java:

  • เพิ่มฟิลด์สแตติกส่วนตัวให้กับคลาสที่คุณต้องการจัดเก็บอินสแตนซ์ซิงเกิลตัน
  • ในการรับอินสแตนซ์ singleton ที่เหมาะสม คุณต้องประกาศวิธีสแตติกสาธารณะ
  • ตอนนี้ คุณต้องรัน "Lazy initialization" ในวิธีสแตติก โดยพื้นฐานแล้วควรพัฒนาออบเจกต์ใหม่ในการโทรครั้งแรกและวางลงในฟิลด์สแตติก วิธีสแตติกต้องส่งคืนอินสแตนซ์นั้น ๆ เสมอในการเรียกครั้งต่อ ๆ ไป
  • ทำให้คอนสตรัคเตอร์เป็นแบบส่วนตัว เมธอดสแตติกของคลาสจะยังสามารถเรียกคอนสตรัคเตอร์ได้ แต่เรียกอ็อบเจ็กต์อื่นไม่ได้
  • โปรดอ่านโค้ดไคลเอ็นต์และแทนที่การเรียกโดยตรงทั้งหมดไปยัง Constructor ของ Singleton ด้วยการโทรไปยังวิธีการสร้างแบบสแตติก

สรุปแล้ว

Java เป็นภาษาการเขียนโปรแกรมที่มีความหลากหลายและมีอิทธิพลอย่างมาก และได้กลายเป็นพื้นฐานสำหรับแอปพลิเคชันบนเว็บและเดสก์ท็อปส่วนใหญ่ที่ใช้อยู่ในปัจจุบัน มันมีคุณสมบัติและกลยุทธ์หลายอย่างที่โปรแกรมเมอร์สามารถใช้เพื่อพัฒนาซอฟต์แวร์ที่มีประสิทธิภาพดีกว่าในรูปแบบที่เหมาะสมที่สุด Design Patterns เป็นกลยุทธ์อย่างหนึ่งที่โปรแกรมเมอร์ Java ใช้เพื่อทำให้โค้ดอ่านได้ ใช้ซ้ำได้ และเข้าใจได้

Design Patterns เป็นหนึ่งในแนวคิดพื้นฐานที่นักพัฒนาซอฟต์แวร์ทุกคนควรคำนึงถึง โลกของการพัฒนาซอฟต์แวร์นั้นกว้างใหญ่ และครอบคลุมทุกด้านตั้งแต่ฟรอนต์เอนด์ แบ็คเอนด์ ฐานข้อมูล เซิร์ฟเวอร์ และอื่นๆ ในสถานการณ์เช่นนี้ ความจำเป็นของชั่วโมงจะต้องถูกจัดระเบียบในแนวทางการเรียนรู้ของคุณ ที่ upGrad คุณสามารถดู หลักสูตรการพัฒนาซอฟต์แวร์ ที่จะช่วยให้คุณสร้างอาชีพที่ยืนยาวในด้านการพัฒนาซอฟต์แวร์ได้ นำเสนอโดยความร่วมมือกับ IIIT-B หลักสูตรนี้สอนโดยผู้เชี่ยวชาญในอุตสาหกรรมและให้โอกาสคุณพัฒนาอาชีพของคุณไปในทิศทางที่คุณเลือก ตรวจสอบรายละเอียดหลักสูตรและลงทะเบียนวันนี้ – หลักสูตรเริ่ม 30 กันยายน 2021!

Singleton Design Pattern เป็นรูปแบบการออกแบบเดียวที่มีใน Java หรือไม่

ไม่ Java มี Design Patterns มากมายสำหรับโปรแกรมเมอร์ และ Singleton ก็เป็นหนึ่งในนั้น

Design Patterns ประเภทใดบ้างที่ใช้ได้กับ Java

Java มีรูปแบบการออกแบบสามประเภทสำหรับนักพัฒนา
1. รูปแบบการออกแบบเชิงสร้างสรรค์
2. รูปแบบการออกแบบโครงสร้าง
3. รูปแบบการออกแบบพฤติกรรม

การใช้ Design Patterns ใน Java มีประโยชน์อย่างไร?

การใช้ Design Patterns ในโค้ดของคุณมีข้อดีดังต่อไปนี้:
1. ปรับปรุงความสามารถในการอ่าน
2. ปรับปรุงโมดูลาร์
3. การเข้าถึงง่าย
4. ความง่ายในการออกแบบและสร้างโปรแกรม