Yanıtlar:
Genel olarak, bir sarmalayıcı sınıf, başka bir sınıfın veya bileşenin işlevselliğini "saran" veya "kapsülleyen" herhangi bir sınıftır. Bunlar, temel sınıfın veya bileşenin uygulanmasından bir düzeyde soyutlama sağlayarak yararlıdır; örneğin, COM bileşenlerini saran sarmalayıcı sınıfları, çağırma kodunu rahatsız etmeden COM bileşenini çağırma işlemini yönetebilir. Ayrıca, ilgili sayı arabirimi noktalarını azaltarak temeldeki nesnenin kullanımını basitleştirebilirler; bu genellikle alttaki bileşenlerin daha güvenli kullanımını sağlar.
Tam olarak göründüğü gibi: başka bir sınıfın veya API'nın işlevselliğini daha basit veya yalnızca farklı bir API'de "saran" bir sınıf.
Sarıcı sınıfları, ilkel türleri nesne olarak kullanmanın bir yolunu sunar. Her ilkel için, bir sarıcı sınıfımız var,
int Integer
byte Byte
Tamsayı ve Bayt, ilkel int ve baytın sarıcı sınıflarıdır. Temel öğeleri nesne olarak kullanmanız gerektiğinde zamanlar / kısıtlamalar vardır, böylece sarma sınıfları boks / kutudan çıkarma olarak adlandırılan bir mekanizma sağlar.
Kavram aşağıdaki örnekle iyi anlaşılabilir:
double d = 135.0 d;
Double doubleWrapper = new Double(d);
int integerValue = doubleWrapper.intValue();
byte byteValue = doubleWrapper.byteValue();
string stringValue = doubleWrapper.stringValue();
işte bu şekilde, diğer ilkel türlere dönüştürmek için sarıcı sınıf türünü de kullanabiliriz. Bu tür bir dönüşüm, ilkel bir türü nesneye dönüştürmeniz ve bunları diğer ilkelleri almak için kullanmanız gerektiğinde kullanılır. Ancak, kod pasajı aşağıdaki gibi elde edilebildiğinden, basit döküm tekniği ile aynı şey elde edilebilir.
double d = 135.0;
int integerValue = (int) d ;
Çift değer açıkça tamsayı değerine dönüştürülse de alt çizgi olarak da adlandırılır.
Bir sarmalayıcı sınıfının başka bir sınıfı sarması gerekmez. Örneğin, bir dll dosyasında bir API sınıfı kaydırma işlevi olabilir.
Örneğin, tüm dll başlatma ve temizleme işlemlerini halledecek ve örn GetProcAddress()
.
Şerefe!
Sarıcı sınıf, tıpkı adı gibi başka bir şeyin etrafına "sarılan" bir sınıftır.
Bunun daha resmi tanımı, Bağdaştırıcı Deseni'ni uygulayan bir sınıf olacaktır . Bu, bir API kümesini daha kullanışlı, okunabilir bir formda değiştirmenize olanak tanır. Örneğin, C # 'da, yerel Windows API'sını kullanmak istiyorsanız, .NET tasarım yönergelerine uygun bir sınıfa sarılmasına yardımcı olur.
Sarıcı sınıfları olarak adlandırılabilecek birkaç tasarım deseni vardır.
" Proxy, Dekoratör, Adaptör ve Köprü Kalıpları arasındaki fark nedir? "
Bazı ortamlarda, sarmalayıcı sınıflarının yapabileceklerinin çoğunun yerine yönler verildiğini belirtmek de değerli olabilir.
DÜZENLE:
Genel olarak bir sargı, sargının uygulanmasıyla ilgili endişe duymadan sargının yaptığı şey üzerinde genişleyecektir, aksi takdirde sarılı sınıfı genişletmeye karşı sarmanın bir anlamı yoktur. Tipik bir örnek, diğer arayüz arayüzlerinin çevresine zamanlama bilgisi veya kayıt işlevselliği eklemektir.
Bu daha sonra Aspect programlama için tipik bir örnek olur. İşlevsel olarak bir arabirim işlevinden geçmek ve kazan plakası günlüğü eklemek yerine, en boy programlama, yöntemler için bir tür normal ifade olan bir nokta kesimi tanımlar ve ardından tüm yöntemlerin eşleştirilmesinden önce, sonra veya çevresinde yürütülmesini istediğiniz yöntemleri bildirirsiniz. nokta kesimi. En-boy programlamanın, sarmalayıcı sınıflarının da kullanılabileceği bir tür Dekoratör deseninin kullanımı olduğunu söylemek her zaman adil olur, ancak her iki teknolojinin de başka kullanımları vardır.
Wrapper sınıfı, başka bir sınıfı saran ve istemci ile kaydırılmakta olan orijinal sınıf arasındaki soyutlamayı sağlayan bir sınıftır.
bir sarmalayıcı sınıfı genellikle özel özellik olarak bir nesnesi olan bir sınıftır. sarmalayıcı bu özel nesnenin API'sini uygular ve böylece özel nesnenin nerede olacağı bir argüman olarak iletilebilir.
bir koleksiyonunuz olduğunu ve nesneler eklendiğinde bir tür çeviri kullanmak istediğinizi varsa, koleksiyonun tüm yöntemlerini içeren bir sarmalayıcı sınıfı yazarsınız. add () çağrıldığında, sarıcı bağımsız değişkenleri yalnızca özel koleksiyona aktarmak yerine çevirir.
sarmalayıcı, bir koleksiyonun kullanılabileceği her yerde kullanılabilir ve özel nesnenin yine de ona atıfta bulunan ve okuyan başka nesneleri olabilir.
Bir sarmalayıcı sınıfı, istemci ile kaydırılmakta olan orijinal sınıf arasına bir dolaylama ve soyutlama katmanı eklemek için başka bir sınıfı sarmak için kullanılan bir sınıftır.
Sarıcı sınıfı, ilkel bir veri türünün etrafındaki bir sarıcıdır. Karşılık gelen sınıf örneklerindeki ilkel veri türlerini temsil eder, örneğin bir boolean veri türü, bir Boolean sınıf örneği olarak temsil edilebilir. Java'daki ilkel sarmalayıcı sınıflarının tümü değiştirilemez, yani bir sarmalayıcı sınıfı örneğine bir değer atandıktan sonra daha fazla değiştirilemez.
Java programlama, ilkel veri türlerini sarıcı sınıf nesnesine karşılık gelecek şekilde dönüştürmek için her ilkel veri türü için sarıcı sınıfı sağlar.
Sarmalayıcı sınıfları, programcıların temel ihtiyaçlarını karşılamak için - yani yalnızca Nesnelerin izin verildiği yerlerde ilkel değerleri kullanmak için - ortaya çıktı. Adından da anlaşılacağı gibi, sarmalayıcı sınıfları ilkel bir değerin etrafına sarılır ve değeri bir Nesnede tutar. Yani, jenerikler, hashmap anahtarları, Arraylists vb.Gibi ilkellerin izin verilmediği tüm yerler, programcıların artık bu ilkel değerleri karşılık gelen sargı tipleri olarak sağlama seçeneğine sahiptir.
Ek olarak, bu sargı tipleri, ilkel tipten karşılık gelen sargı tiplerine ve sırtına ve ayrıca Dizelerden sargı tiplerine ve sırtına dönüştürmek için bir dizi faydalı metoda sahiptir.
- Ben derinlemesine sarıcı türleri kavramını açıklayan bir Blogumda sarıcı sınıflar ayrıntılı bir yazı yazdım http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ (Açıklanması - Bu blog bana aittir)
Şu anda projem için bir sarıcı sınıf kullandım ve elde ettiğim ana faydalar (konu açıklamasını genişletmek için tek bir fayda):
Özel durum işleme: Benim ana sınıf, başka bir sınıf sarar, varsa, istisnalar atma yöntemleri vardır, bu yüzden istisnaları işleme ve hemen günlükleri bir sarmalayıcı sınıf oluşturdu. Yani, benim ana kapsamımda, istisna yönetimi yoktur. Sadece bir yöntem çağırıyorum ve bir şeyler yapıyorum.
Kolay Kullanım: Nesneyi kolayca başlatabilirim. Normalde başlatma aşaması birçok adımdan oluşur.
Kod Okunabilirliği: Başka bir programcı kodumu açtığında, kod çok açık ve kullanımı kolay görünecektir.
Ayrıntıları Gizleme: Başka bir programcının kullanacağı bir sınıf oluşturuyorsanız, "hata işleme, özel durum işleme, iletileri günlüğe kaydetme vb." Gibi ayrıntıları programlayıcının işlemesi gerekmeyecek şekilde sarabilirsiniz. kaos, sadece yöntemleri kullanır.
Bir sarmalayıcı sınıf, yalnızca bir şey tutma ve ona bazı işlevler ekleme amacına hizmet eden bir sınıftır. Java'da ilkeller (ints, float, chars ... gibi) nesne olmadığından, onlara bir tane gibi davranmak istiyorsanız, bir sarmalayıcı sınıfı kullanmanız gerekir. Bir ints Vektörü oluşturmak istediğinizi varsayalım, sorun bir Vector yalnızca ilkel nesneleri değil Nesneleri tutar. Yapacağınız şey tüm ints'ları bir Integer sarmalayıcıya koymak ve bunu kullanmaktır. Misal:
int number = 5;
Integer numberWrapped = new Integer(number);
//now you have the int in an object.
//and this is how to access the int value that is being wrapped.
int again = numberWrapped.intValue();
bir sarıcı, farklı platform arasındaki iki farklı uygulama arasında iletişim kurmak için kullanılan bir sınıftır