Arayüzler – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Arayüzler
Arayüzleri tip olarak kullanmayı alışkanlık haline getirirseniz programınız çok daha esnek olacaktır. Uygulamaları değiştirmek istediğinize karar verirseniz, tek yapmanız gereken yapıcıdaki sınıf adını değiştirmek (veya farklı bir statik fabrika kullanmak).
Örneğin, ilk bildirim okunacak şekilde değiştirilebilir ve çevreleyen kodun tamamı çalışmaya devam eder. Çevreleyen kod, eski uygulama türünden habersizdi, bu nedenle değişiklikten habersiz olurdu.
Bir uyarı var: Orijinal uygulama, arayüzün genel sözleşmesi tarafından gerekli olmayan bazı özel işlevler sunuyorsa ve kod bu işlevselliğe bağlıysa, yeni uygulamanın aynı işlevi sağlaması çok önemlidir.
Örneğin, ilk bildirimi çevreleyen kod Vector öğesinin senkronize olmasına bağlıysa, bildirimde Vector yerine ArrayList’i değiştirmek yanlış olur.
Peki neden uygulamaları değiştirmek isteyesiniz? Yeni uygulama daha iyi performans sunduğundan veya istenen ekstra işlevsellik sunduğundan. Gerçek dünyadan bir örnek, ThreadLocal sınıfıyla ilgilidir.
Dahili olarak, bu sınıf, thread başına değerleri ThreadLocal örnekleriyle ilişkilendirmek için Thread’de bir paket-özel Harita alanı kullanır. Sürümde, bu alan bir HashMap örneğine başlatıldı. Sürümde, platforma IdentityHashMap adlı yeni, özel amaçlı bir Harita uygulaması eklendi. Alanı HashMap yerine IdentityHashMap olarak başlatmak için tek bir kod satırı değiştirilerek, ThreadLocal tesisi daha hızlı hale getirildi.
Alan, Harita yerine HashMap olarak bildirilmiş olsaydı, tek satırlık bir değişikliğin yeterli olacağının garantisi yoktur. İstemci kodu, Harita arabirimi dışında HashMap işlemlerini kullanmışsa veya haritayı bir HashMap talep eden bir yönteme geçirmişse, alan bir IdentityHashMap olarak değiştirilirse kod artık derlenmeyecektir.
Uygun bir arayüz yoksa, bir nesneye bir arayüz yerine bir sınıf tarafından atıfta bulunmak tamamen uygundur. Örneğin, String ve BigInteger gibi değer sınıflarını düşünün. Değer sınıfları nadiren birden çok uygulama düşünülerek yazılır. Genellikle nihaidirler ve nadiren karşılık gelen arayüzlere sahiptirler.
Bir parametre, değişken, alan veya dönüş türü olarak bir değer sınıfı kullanmak tamamen uygundur. Daha genel olarak, somut bir sınıfın ilişkili bir arabirimi yoksa, o zaman bir değeri temsil edip etmediğini sınıfına göre belirtmekten başka seçeneğiniz yoktur. Random sınıfı bu kategoriye girer.
Uygun arabirim türünün olmadığı ikinci bir durum, temel türleri arabirimler yerine sınıflar olan bir çerçeveye ait nesnelerin durumudur. Bir nesne böyle bir sınıf tabanlı çerçeveye aitse, ona uygulama sınıfından ziyade tipik olarak soyut olan ilgili temel sınıf tarafından atıfta bulunulması tercih edilir. Java.util.TimerTask sınıfı bu kategoriye girer.
Uygun bir arabirim türünün olmadığı son bir durum, bir arabirim uygulayan ancak arabirimde bulunmayan ekstra yöntemler sağlayan sınıfların durumudur, örneğin LinkedList. Böyle bir sınıf, program ekstra yöntemlere dayanıyorsa, yalnızca örneklerine atıfta bulunmak için kullanılmalıdır: asla bir parametre türü olarak kullanılmamalıdır.
Bu vakaların ayrıntılı olması amaçlanmamıştır, yalnızca sınıfına göre bir nesneye atıfta bulunmanın uygun olduğu durumların lezzetini iletmek içindir. Uygulamada, belirli bir nesnenin uygun bir arayüze sahip olup olmadığı açık olmalıdır. Olursa, nesneye atıfta bulunmak için arabirimi kullanırsanız programınız daha esnek olacaktır; değilse, sınıf hiyerarşisinde gerekli işlevselliği sağlayan en yüksek sınıfı kullanın.
Java interface Örnekleri
Java arayüz tasarımı
Interface kavramı
İmplements Java Nedir
İnterface Nedir
Oop Interface Nedir
Java arayüz Nedir
Yazılımda arayüz nedir
Arayüzleri Tercih Etme
Yansıtma tesisi, java.lang.reflect, yüklenen sınıflar hakkındaki bilgilere programlı erişim sunar. Bir Class örneği verildiğinde, Class örneği tarafından temsil edilen sınıfın yapıcılarını, yöntemlerini ve alanlarını temsil eden Yapıcı, Yöntem ve Alan örnekleri elde edebilirsiniz. Bu nesneler, sınıfın üye adlarına, alan türlerine, yöntem imzalarına vb. programlı erişim sağlar.
Ayrıca, Yapıcı, Yöntem ve Alan örnekleri, temeldeki karşılıklarını yansıtıcı bir şekilde manipüle etmenize izin verir: Yapıcı, Alan ve Yöntem örneklerinde yöntemleri çağırarak örnekler oluşturabilir, yöntemleri çağırabilir ve temel alınan sınıfın alanlarına erişebilirsiniz.
Örneğin, Method.invoke, herhangi bir sınıfın herhangi bir nesnesi üzerinde herhangi bir yöntemi çağırmanıza izin verir (genel güvenlik kısıtlamalarına tabidir). Yansıma, bir sınıfın diğerini kullanmasına izin verir, birinci sınıf derlendiğinde ikinci sınıf mevcut olmasa bile.
Ancak bu gücün bir bedeli vardır. Özel durum denetimi de dahil olmak üzere derleme zamanı tür denetiminin tüm avantajlarını kaybedersiniz. Bir program var olmayan veya erişilemeyen bir yöntemi yansıtıcı olarak çağırmaya çalışırsa, özel önlemler almadığınız sürece çalışma zamanında başarısız olur.
Yansıtıcı erişim gerçekleştirmek için gereken kod beceriksiz ve ayrıntılıdır. Yazması sıkıcı ve okuması zor. Performans acı çekiyor. 1.3 sürümünden itibaren, yansıtıcı yöntem çağırma, makinemde normal yöntem çağırmadan kırk kat daha yavaştı. Yansıma, büyük ölçüde geliştirilmiş performans için 1.4 sürümünde yeniden tasarlandı, ancak yine de normal erişimden iki kat daha yavaş ve aradaki farkın kapanması pek mümkün değildir.
Yansıma tesisi, orijinal olarak bileşen tabanlı uygulama oluşturucu araçları için tasarlanmıştır. Bu tür araçlar genellikle sınıfları talep üzerine yükler ve hangi yöntemleri ve oluşturucuları desteklediklerini bulmak için yansıma kullanır.
Araçlar, kullanıcılarının etkileşimli olarak bu sınıflara erişen uygulamalar oluşturmasına izin verir, ancak oluşturulan uygulamalar sınıflara yansıtıcı olarak değil normal olarak erişir. Yansıma sadece tasarım zamanında kullanılır. Kural olarak, nesnelere çalışma zamanında normal uygulamalarda yansıtıcı olarak erişilmemelidir.
Yansıma kullanımını gerektiren birkaç karmaşık uygulama vardır. Örnekler, sınıf tarayıcılarını, nesne denetçilerini, kod analiz araçlarını ve yorumlayıcı gömülü sistemleri içerir. Reflection, saplama derleyicilerine olan ihtiyacı ortadan kaldırmak için RPC sistemlerinde kullanım için de uygundur. Başvurunuzun bu kategorilerden birine girip girmediğine dair herhangi bir şüpheniz varsa, muhtemelen değildir.
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)