Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่างวัตถุที่ไม่แน่นอนและไม่เปลี่ยนรูป


ใน 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());
   }
}