Değişmezlik – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Değiştirilebilir Alanlar
Kamu sınıfları nadiren (eğer varsa) ortak alanlara sahip olmalıdır (genel yöntemlerin aksine). Bir alan nihai değilse veya değiştirilebilir bir nesneye son başvuruysa, alanı herkese açık hale getirerek alanda depolanabilecek değerleri sınırlama yeteneğinden vazgeçmiş olursunuz. Ayrıca alan değiştirildiğinde herhangi bir işlem yapma yeteneğinden de vazgeçmiş olursunuz.
Bunun basit bir sonucu, genel değiştirilebilir alanları olan sınıfların iş parçacığı için güvenli olmamasıdır. Bir alan nihai olsa ve değiştirilebilir bir nesneye atıfta bulunmasa bile, alanı herkese açık hale getirerek, alanın bulunmadığı yeni bir dahili veri gösterimine geçme esnekliğinden vazgeçmiş olursunuz.
Genel sınıfların ortak alanlara sahip olmaması kuralının bir istisnası vardır. Sınıfların, genel statik nihai alanlar aracılığıyla sabitleri açığa çıkarmasına izin verilir. Geleneksel olarak, bu tür alanların adları, sözcüklerin alt çizgi ile ayrıldığı büyük harflerden oluşur.
Bu alanların ilkel değerler veya değişmez nesnelere referanslar içermesi çok önemlidir. Değişken bir nesneye referans içeren bir son alan, nihai olmayan bir alanın tüm dezavantajlarına sahiptir. Başvuru değiştirilemezken, başvurulan nesne değiştirilebilir.
Sıfır olmayan bir dizinin her zaman değişebilir olduğuna dikkat edin, bu nedenle genel statik son dizi alanına sahip olmak neredeyse her zaman yanlıştır. Bir sınıfın böyle bir alanı varsa, istemciler dizinin içeriğini değiştirebilecektir. Bu, güvenlik açıklarının sık görülen bir kaynağıdır.
Özetlemek gerekirse, erişilebilirliği her zaman mümkün olduğunca azaltmalısınız. Minimal bir genel API’yi dikkatlice tasarladıktan sonra, başıboş sınıfların, arayüzlerin veya üyelerin API’nin bir parçası olmasını engellemelisiniz. Genel statik nihai alanlar dışında, genel sınıfların ortak alanları olmamalıdır. Genel statik nihai alanlar tarafından başvurulan nesnelerin değişmez olduğundan emin olun.
Değişmezlik
Değişmez bir sınıf, örnekleri değiştirilemeyen bir sınıftır. Her örnekte yer alan tüm bilgiler, oluşturulduğunda sağlanır ve nesnenin ömrü boyunca sabitlenir. Java platformu kitaplıkları, String, ilkel sarmalayıcı sınıfları ve BigInteger ve BigDecimal dahil olmak üzere birçok değişmez sınıf içerir.
Bunun birçok iyi nedeni vardır: Değişmez sınıfları tasarlamak, uygulamak ve kullanmak değişken sınıflardan daha kolaydır. Hataya daha az eğilimlidirler ve daha güvenlidirler.
Bir sınıfı değişmez yapmak için şu beş kuralı izleyin:
1. Nesneyi değiştiren herhangi bir yöntem sağlamayın (mutatörler olarak bilinir).
2. Hiçbir yöntemin geçersiz kılınmadığından emin olun. Bu, dikkatsiz veya kötü niyetli alt sınıfların, sınıfın değişmez davranışından ödün vermesini önler. Yöntem geçersiz kılmalarını önleme genellikle sınıfın son haline getirilmesiyle yapılır, ancak daha sonra tartışacağımız alternatifler vardır.
3. Tüm alanları kesin hale getirin. Bu, sistem tarafından zorlanan bir şekilde niyetlerinizi açıkça ifade eder. Ayrıca, bellek modelini yeniden işlemeye yönelik devam eden çabaların sonuçlarına bağlı olarak, yeni oluşturulan bir örneğe bir başvuru bir iş parçacığından diğerine senkronizasyon olmadan geçirilirse doğru davranışın sağlanması gerekli olabilir.
4. Tüm alanları özel yapın. Bu, istemcilerin alanları doğrudan değiştirmesini önler. Değişmez sınıfların ilkel değerler veya değişmez nesnelere referanslar içeren genel nihai alanlara sahip olmasına teknik olarak izin verilirken, daha sonraki bir sürümde dahili temsilin değiştirilmesini engellediği için önerilmez.
5. Değiştirilebilir bileşenlere özel erişim sağlayın. Sınıfınızda değiştirilebilir nesnelere başvuran alanlar varsa, sınıfın istemcilerinin bu nesnelere referans alamadığından emin olun. Böyle bir alanı asla istemci tarafından sağlanan bir nesne referansına başlatmayın veya bir erişimciden nesne referansını döndürmeyin. Yapıcılar, erişimciler ve readObject yöntemlerinde savunma kopyaları oluşturun.
Önceki öğelerdeki örnek sınıfların çoğu değişmezdir. Böyle bir sınıf, Madde 8’deki PhoneNumber’dır ve her öznitelik için erişimcileri vardır, ancak karşılık gelen mutatörleri yoktur.
Bu sınıf, karmaşık bir sayıyı (hem gerçek hem de sanal kısımları olan bir sayı) temsil eder. Standart Nesne yöntemlerine ek olarak, gerçek ve sanal kısımlar için erişimciler sağlar ve dört temel aritmetik işlemi sağlar: toplama, çıkarma, çarpma ve bölme.
Java indir
Java güncelleme
Java son sürüm
Java yükleme
Java güncelleme indir
Java güncelleme Windows 10
Java Path ekleme
Java path Windows 10
Aritmetik işlemlerin bu örneği değiştirmek yerine nasıl yeni bir Karmaşık örnek oluşturduğuna ve döndürdüğüne dikkat edin. Bu model, önemsiz olmayan değişmez sınıfların çoğunda kullanılır.
İşlevsel yaklaşım olarak bilinir, çünkü yöntemler, işlenenleri değiştirmeden bir işlev uygulamanın sonucunu döndürür. Bunu, yöntemlerin işlenenlerine, durumunun değişmesine neden olan bir prosedürü uyguladığı daha yaygın prosedür yaklaşımıyla karşılaştırın.
İşlevsel yaklaşım, aşina değilseniz doğal görünmeyebilir, ancak birçok avantajı olan değişmezliği sağlar. Değişmez nesneler basittir. Değişmez bir nesne, tam olarak bir durumda, oluşturulduğu durumda olabilir.
Tüm kurucuların sınıf değişmezleri oluşturduğundan emin olursanız, bu değişmezlerin sizin tarafınızdan veya sınıfı kullanan programcı tarafından daha fazla çaba sarf edilmeden her zaman doğru kalacağı garanti edilir.
Değişken nesneler ise keyfi olarak karmaşık durum uzaylarına sahip olabilir. Belgeler, mutator yöntemlerle gerçekleştirilen durum geçişlerinin kesin bir tanımını sağlamıyorsa, değişken bir sınıfı güvenilir bir şekilde kullanmak zor veya imkansız olabilir.
Değişmez nesneler doğal olarak iş parçacığı için güvenlidir; senkronizasyon gerektirmezler. Aynı anda erişen birden fazla iş parçacığı tarafından bozulamazlar. Bu, iplik güvenliğine ulaşmak için açık ara en kolay yaklaşımdır.
Aslında, hiçbir iş parçacığı değişmez bir nesne üzerinde başka bir iş parçacığının herhangi bir etkisini gözlemleyemez. Bu nedenle değişmez nesneler özgürce paylaşılabilir. Değişmez sınıflar, istemcileri mümkün olan her yerde mevcut örnekleri yeniden kullanmaya teşvik ederek bundan faydalanmalıdır. Bunu yapmanın kolay bir yolu, sık kullanılan değerler için genel statik son sabitleri sağlamaktır.
Bu yaklaşım bir adım daha ileri götürülebilir. Değişmez bir nesne, sık istenen örnekleri önbelleğe alan ve önceden var olan bir örnek istendiğinde yeni örnekler oluşturmaktan kaçınan statik fabrikalar sağlayabilir.
BigInteger ve Boolean sınıflarının her ikisi de bu tür statik fabrikalara sahiptir. Bu tür statik fabrikaların kullanılması, müşterilerin yeni örnekler oluşturmak yerine önceden var olan örnekleri paylaşmasına neden olarak bellek ayak izini ve çöp toplama maliyetlerini azaltır.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)