SORU
18 AĞUSTOS 2010, ÇARŞAMBA


Neden't JavaBeans yerine değişmez POJOs kullanmak?

Şimdiye kadar kaç Java uygulamaları artık sadece masaüstü uygulamaları hayata geçirdik. Veri uygulama geçirmeden yerine mutators (ayarlayıcıları . nesneleri kullanarak değişmez nesneleri kullanmayı tercih ederim ^em>ve alıcılarayrıca JavaBeans aradı.

Ama Java dünyasında JavaBeans kullanımı çok daha yaygın gibi görünüyor, ve onları yerine kullanmam gerektiğini anlayamıyorum. Şahsen bu kod ise sadece devlet her zaman mutasyona yerine sabit nesneler ile ilgilenir ise daha iyi görünüyor.

Sabit nesneler de tavsiye edilirMadde 15: mutability en Aza indirmek,Etkili Java 2ed.

Eğer bir nesne varsa Person olarak uygulanırJavaBeangibi görünecektir:

public class Person {
    private String name;
    private Place birthPlace;

    public Person() {}

    public setName(String name) {
        this.name = name;
    }

    public setBirthPlace(Place birthPlace) {
        this.birthPlace = birthPlace;
    }

    public String getName() {
        return name;
    }

    public Place getBirthPlace() {
        return birthPlace;
    }
}

Ve 5* *aynı bir olarak uygulanırdeğişmeznesne:

public class Person {
    private final String name;
    private final Place birthPlace;

    public Person(String name, Place birthPlace) {
        this.name = name;
        this.birthPlace = birthPlace;
    }

    public String getName() {
        return name;
    }

    public Place getBirthPlace() {
        return birthPlace;
    }
}

Ya da daha yakın struct C:

public class Person {
    public final String name;
    public final Place birthPlace;

    public Person(String name, Place birthPlace) {
        this.name = name;
        this.birthPlace = birthPlace;
    }
}

Ayrıca uygulama ayrıntılarını gizlemek için değişmez nesne alıcı olabilir. Ama ben sadece struct olarak kullanmak beri atlamayı tercih ederim "" ve basit tutun. alıcılar

Daha iyi JavaBeans kullanımı neden anlamıyorum, ya da değişmez benim POJOs ile devam edip etmeyeceğimi gereken sadece,?

Java kütüphaneleri çok JavaBeans için daha iyi destek var gibi görünüyor, ama belki de değişmez POJOs için daha fazla destek, zaman içinde daha çok popüler olur?

CEVAP
18 AĞUSTOS 2010, ÇARŞAMBA


JavaBeans Zaman Tercih Ederim

  • onları beklediğiniz ortamları ile etkileşim
  • hangi örnekleme tüm başlatma yapmak için uygunsuz olan özellikleri var
  • pahalı ya nedense kopyalamak için imkansız ama mutasyon gerektiren durumu var
  • bir noktada erişilebilir (örneğin, hesaplanan değerler için saklı hareket eden, erişim, yetkilendirme, vb.) değiştirmek için olabilir
  • sersemce ısrarcı bir şekilde daha "nesne yönelimli kullanım için" JavaBeans . bu kodlama standartlarına uymak istiyorum

Değişmez POJOs Zaman Tercih Ederim

  • basit ve az sayıda özellikleri var
  • ortamlar JavaBean kuralları fırsatları ile etkileşim gerekmez
  • nesne klonlama ne zaman kolay değildir (ya da en azından Olası) devlet kopyalamak için
  • hiç nesne klonlama planı yok
  • hiç yukarıdaki gibi nasıl erişileceğini değiştirmek zorunda değilsin bu çok eminsin
  • sızlanan (veya) hiçe saymaya kodunuzu yeterli değil hakkında dinlemenin sakıncası yoktur "nesne yönelimli"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ama Jenna

    Ama Jenna

    29 NİSAN 2011
  • Christopher Bill

    Christopher

    30 NİSAN 2009
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009