2013-07-15 33 views
6

Şu anda yapılandırmamı tutacak bir sınıflar yüklüyorum ve işte bu. Tek yaptığım değerleri yapılandırma dosyasından saklamak.Son değişkenler için alıcılar

yarısından fazlası kod getters ve ben pratik alıcılar var ya da sadece doğrudan değişkenlere erişmek için hala olup olmadığını merak ediyorum.

Yani bu:

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

    final String name; 

    public final String getName() 
    { 
     return name; 
    } 
} 

Veya:

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

    public final String name; 
} 

Onlar aslında hiçbir şey yapmıyor zaman orada tüm alıcılar var ama değişken dönmek için gerçekten saçma geliyor. Ama ben yine de oraya oraya sahip olmak için yaygın Java uygulaması olduğu söylendi. getters ile veri Kapsüllenen

+1

Derleyici, onları yine de satır içi kullanacaktır. Yaptığınız şey için “java.util.Properties” i kullanmama rağmen. – jlordo

+2

Son değişkenler ile, bu aptalca görünebilir, ancak son değişkenler ve alt sınıflar tanımlanmış aynı değişken isminiz varsa ve bu değişkenlere erişmeye çalışırsanız, o zaman karışıklık/set olmadan ne kadar karışık olacağını göreceksiniz. Uygun kapsülleme her zaman en iyi uygulamadır. – kosa

+0

@jlordo, verdiğim çok basit bir örnekti. 'Özellikler ', yaptığım şey için hiçbir şekilde uygun değildir. – Cheetah

cevap

11

dahil olmak üzere birçok avantaj sağlayabilir:

  • Sen arayanları etkilemeden, diğer bazı temsil alanını değiştirebilir.
  • Alıcınıza ek kod ekleyebilirsiniz.
  • Alınanları sağlayan bir arabirim uygulayabilirsiniz.
  • final olmasa bile alanlara salt okunur erişim sağlayabilirsiniz.
+1

Bunu yapmanın en önemli nedeni cevabınızda açıkladığınız [coupling] (http://en.wikipedia.org/wiki/Coupling_%28computer_programming%29). –

+0

@LuiggiMendoza Toplayıcıları/ayarlayıcılarla ilgili birleştirme işlemini açıklayabilir misiniz? –

+2

Sınıfın temsiline daha fazla kod çifti sahip olmak, bu temsili değiştirmek için daha fazla çalışmayı sağlar. Kapsülleme, temsili değiştikçe sabit kalabilen bir arabirimin arkasındaki iç temsili gizler. –

0

bildiğim uygulamasının, örneğin System.out gibi değişmez türleri ile kamu statik nihai alanları kullanabilir olmasıdır. Ancak, örnek alanlarına örneklerine getçiler ekliyorum.

Ben ancak nihai String açığa orada zarar olduğunu gerçi sana katılıyorum. Gerçi, değiştirilebilir tiplere dikkat edin. Ayrıca, IDE'de satır içi ve kod oluşturma olduğundan, alıcıların maliyetleri, hem yazı kodu hem de çalışma zamanında oldukça zayıf olma eğilimindedir.

İlgili konular