วัตถุไม่เปลี่ยนรูปคืออะไร?

ในการเขียนโปรแกรมเชิงวัตถุวัตถุที่ไม่เปลี่ยนรูปเป็นวัตถุที่มีคุณสมบัติไม่สามารถเปลี่ยนแปลงได้หลังจากที่มันถูกสร้างขึ้น ตรงกันข้ามวัตถุส่วนใหญ่เป็นวัตถุที่ไม่แน่นอนซึ่งหมายความว่าคุณสมบัติบางอย่างหรือทั้งหมดสามารถเปลี่ยนแปลงได้อย่างอิสระหลังจากการสร้าง ภาษาคอมพิวเตอร์ที่หลากหลายมีความสามารถในการสร้างวัตถุที่ไม่เปลี่ยนรูปได้ซึ่งรวมถึง Java, C ++, erlang, Tcl และ scala

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

ยกตัวอย่างเช่นการสร้างวัตถุที่ไม่เปลี่ยนรูปแบบใน Java ต้องอาศัยคำหลัก "ขั้นสุดท้าย" เป็นอย่างมาก วิธีที่รวดเร็วในการทำให้คลาสไม่เปลี่ยนแปลงใน Java คือการประกาศคลาสรวมถึงวิธีการและสมาชิกข้อมูลทั้งหมด กลยุทธ์ที่คล้ายกันสามารถใช้ใน C ++ กับคำหลัก "const" อย่างไรก็ตามวิธีการเหล่านี้ขึ้นอยู่กับเนื้อหาของชั้นเรียนอาจไม่ใช่วิธีที่ดีที่สุด โดยทั่วไปวัตถุสามารถทำให้ไม่สามารถเปลี่ยนแปลงได้โดยการบำรุงรักษาข้อมูลภายในอย่างระมัดระวัง

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

ถ้าวัตถุนั้นไม่แน่นอน แต่ต้องการข้อมูลที่ไม่เปลี่ยนรูปแบบจะต้องสร้างอย่างถูกต้องข้อมูลที่ไม่เปลี่ยนรูปจะต้องเริ่มต้นก่อนที่วัตถุที่สามารถเปลี่ยนแปลงได้ วัตถุที่เปลี่ยนไม่ได้จะไม่เปลี่ยนรูปเสมอไม่ว่าจะเป็นค่าข้อมูลหรือวัตถุขนาดใหญ่และจะต้องได้รับการปฏิบัติเช่นนี้ โดยทั่วไปแล้ววัตถุที่ไม่เปลี่ยนรูปจะไม่สามารถทำให้เกิดการเปลี่ยนแปลงได้หลังจากที่ถูกสร้างขึ้นแม้ว่าบางครั้งวัตถุเหล่านั้นอาจถูกคัดลอกเป็นวัตถุที่ไม่แน่นอน โดยปกติสามารถสันนิษฐานได้ว่าวัตถุที่ไม่เปลี่ยนรูปและสำเนาใด ๆ ของมันยังไม่เปลี่ยนรูปซึ่งสามารถป้องกันข้อมูลหรือปัญหาหน่วยความจำ