19 Mayıs 2012 Cumartesi

Java Immutable (Değişmez) Sınıflar

Immutable (değişmez) sınıflar, nesneleri bir kez oluşturulduktan sonra nesne içeriği değiştirilemeyen sınıflardır. Bir nevi sabit sınıflardır diyebiliriz. Örneğin, Java'da String sınıfı değişmez sınıflardan bir tanesidir. Diğer bilinen değişmez sınıflardan bazıları, Integer, Double, Boolean, BigDecimal sınıflarıdır. Gelin şimdi hem değişmez sınıfların özelliklerini görmek adına hem de değişmez bir sınıf nasıl yaratılır onu görmek adına bir sınıf yazalım.
public final class ImmutableMutant {            private final String name;      private final int numberOfArms;      private final int numberOfLegs;            public ImmutableMutant(final String name, final int numberOfArms,                              final int numberOfLegs) {          this.name = name;          this.numberOfArms = numberOfArms;          this.numberOfLegs = numberOfLegs;              }            public String getName() {          return name;      }            public int getNumberOfArms() {          return numberOfArms;      }            public int getNumberOfLegs() {          return numberOfLegs;      }  }
Kodu incelediğimizde sınıfın final bir sınıf olduğunu görüyoruz. Sınıfı final olarak tanımlamanın amacı, sınıfın başka sınıflar tarafından extend edilmesini (türetilmesini) engellemek. Yani, final sınıfların alt sınıfları olmaz. Dolayısıyla değişmez sınıflardan herhangi bir şekilde başka sınıflar türetilemez. İkinci olarak, sınıfın tüm elemanları private ve final'dır. Yani, sınıf içinden veya dışından herhangi bir şekilde değiştirilemez. Üçüncü olarak, sınıfın tüm elemanları sadece constructor vasıtasıyla ilklendirilebilir. Ve son olarak, sınıf elemanlarını dışardan değiştirebilecek metodlar (setter metodları) yoktur. Şimdi de değişmez sınıfların özellikleri ve avantajlarından bahsedelim. Değişmez sınıf nesneleri kesinlikle thread korumalıdır (thread-safe). Çünkü, bir kez oluşturulduktan sonra içeriği değiştirilemez bu da threadlerde kullanımda ortaya çıkabilecek senkronizasyon sorunlarını ortadan kaldırır. Değişmez sınıf nesnelerinin içerikleri değişmeyeceği için program akışı içerisinde içerikte istenmeyen değişikliklerin olmasının önüne geçilebilecektir. Değişmez sınıf nesnelerini gönül rahatlığıyla başka referanslara atayabilirsiniz. Örneğin, bir metoda yolladığınızda o metod içerisinde nesnenin değişmeyeceğini garanti etmiş olursunuz. Devamı için : Java Immutable (Değişmez) Sınıflar

Hiç yorum yok:

Yorum Gönder

Yorumunuzu esirgemeyiniz..