ใน Java สถานะของอ็อบเจ็กต์ที่ไม่เปลี่ยนรูปไม่สามารถแก้ไขได้หลังจากสร้างแล้ว แต่ต้องอ้างอิงอ็อบเจ็กต์อื่นอย่างแน่นอน มีประโยชน์มากในสภาพแวดล้อมแบบมัลติเธรดเนื่องจากหลายเธรดไม่สามารถเปลี่ยนสถานะของอ็อบเจ็กต์ได้ ดังนั้นอ็อบเจ็กต์ที่ไม่เปลี่ยนรูปจึงปลอดภัยสำหรับเธรด วัตถุที่ไม่เปลี่ยนรูปได้มีประโยชน์มากในการหลีกเลี่ยง coupling ชั่วขณะและมี atomicity ที่ล้มเหลวเสมอ
ในทางกลับกัน ออบเจ็กต์ที่เปลี่ยนแปลงได้จะมีฟิลด์ที่สามารถเปลี่ยนแปลงได้ อ็อบเจ็กต์ที่ไม่เปลี่ยนรูปแบบไม่มีฟิลด์ที่สามารถเปลี่ยนได้หลังจากสร้างออบเจกต์แล้ว
ซีเนียร์ เลขที่ | คีย์ | วัตถุที่ไม่แน่นอน | วัตถุที่ไม่เปลี่ยนรูป |
---|---|---|---|
1 | พื้นฐาน | เราสามารถแก้ไขสถานะของวัตถุที่เปลี่ยนแปลงได้หลังจากที่ถูกสร้างขึ้น | เราไม่สามารถแก้ไขสถานะของวัตถุได้หลังจากที่สร้างแล้ว |
2 | ความปลอดภัยของเธรด | วัตถุที่เปลี่ยนแปลงได้นั้นไม่ปลอดภัยสำหรับเธรด | วัตถุที่ไม่เปลี่ยนรูปเป็นเธรดที่ปลอดภัย |
3 | รอบชิงชนะเลิศ | คลาส Mutable ยังไม่จบ | เพื่อสร้างวัตถุที่ไม่เปลี่ยนรูป ให้คลาสสุดท้าย |
4 | ตัวอย่าง | โดยค่าเริ่มต้น คลาสทั้งหมดและวัตถุนั้นเปลี่ยนแปลงได้ตามธรรมชาติ | คลาสสตริงและแรปเปอร์ทั้งหมดเป็นตัวอย่างของคลาสที่ไม่เปลี่ยนรูปแบบ |
ตัวอย่างคลาสที่ไม่เปลี่ยนรูป
public final class ImmutableClass { private String laptop; public String getLaptop() { return laptop; } public ImmutableClass(String laptop) { super(); this.laptop = laptop; } } public class Main { public static void main(String args[]) { ImmutableClass immutableClass = new ImmutableClass("Dell"); System.out.println(immutableClass.getLaptop()); } }
ตัวอย่างคลาส Muttable
public class MuttableClass { private String laptop; public String getLaptop() { return laptop; } public void setLaptop(String laptop) { this.laptop = laptop; } public MuttableClass(String laptop) { super(); this.laptop = laptop; } } public class Main { public static void main(String args[]) { MuttableClass muttableClass = new MuttableClass("Dell"); System.out.println(muttableClass.getLaptop()); muttableClass.setLaptop("IBM"); System.out.println(muttableClass.getLaptop()); } }