Soru Bir sarıcı sınıfı nedir?


Bir sarıcı sınıfı nedir?
Bu tür sınıflar nasıl yararlıdır?


191
2018-05-20 17:16


Menşei




Cevaplar:


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 soyutlama seviyesi sağlayarak faydalıdır; örneğin, COM bileşenlerini sarmalayan sarmalayıcı sınıfları, COM kodunu, onunla çağrı kodunu rahatsız etmeden başlatma işlemini yönetebilir. Ayrıca, ilgili sayı arayüz noktalarını azaltarak altta yatan nesnenin kullanımını basitleştirebilirler; Sıklıkla, bu altta yatan bileşenlerin daha güvenli kullanımını sağlar.


152
2018-05-20 17:19



Cephe deseni ve Sarıcı Sınıfı arasındaki fark nedir ... - Nirajan Singh
Bir sarmalayıcı sınıfı (adaptör olarak), ambalajın belirli bir araca uyması ve bir polimorfik davranışı desteklemesi gerektiğinde kullanılır. Öte yandan, daha kolay veya daha basit bir arayüz çalışması istendiğinde bir cephe kullanılır. - Yadu
Bu gönderide, bir sarmanın geç bağlı bir sınıf için kesin olarak tanımlanmış bir proxy oluşturulmasında yararlı olabileceği önerilmektedir: Geç bağlama kullanabilir miyim .... Bu, ambalajcılar için Paul Sonier'in yukarıda anlatılanın ötesinde geçerli bir ek kullanım mı? - Todd
@NirajanSingh Wrapper, halihazırda mevcut iki arabirimi yeniden kullanır ve bir diğeriyle çalışır. Öte yandan, cephe yeni bir arayüz oluşturur. - Alireza


Sadece kulağa ne gibi geliyor: Başka bir sınıfın veya API'nın işlevini daha basit veya yalnızca farklı bir API'de "saran" bir sınıf.

Görmek: Adaptör kalıbı, Dış cephe


64
2018-05-20 17:18



Evet! Cephe kalıbı için sıklıkla eşanlamlı. Birçok kod belgelerinde, "Wrapper to XX :: yy yöntemi" veya "Wrapper to XX :: yy yöntemi istisna işlemiyle" gibi küçük bir kestirme olarak tanımlanan belirgin Cephe yöntemini görüyorum. - Peter Krauss


Sarıcı sınıfları, ilkel türleri nesne olarak kullanmanın bir yolunu sağlar. Her ilkel için, gibi bir sarmalayıcı sınıfımız var.

int Integer
byte Byte 

Tamsayı ve Byte, ilkel int ve bayt sarmalayıcı sınıflarıdır. İlkelleri nesne olarak kullanmanız gerektiğinde zamanlar / kısıtlamalar vardır, böylece sarmalayıcı sınıfları boks / kutuklama olarak adlandırılan bir mekanizma sağlar.

Konsept 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();

Bu şekilde, diğer ilkel türlere de dönüştürmek için sarmalayıcı sınıf türünü kullanabiliriz. Bu tür bir dönüşüm, ilkel bir nesneyi nesneye dönüştürmeniz ve diğer ilkelleri de almak için kullanmanız gerektiğinde kullanılır. Bu yaklaşım için büyük bir kod yazmanız gerekir. Bununla birlikte, aşağıdaki gibi kod pasajı elde edilebildiğinden, aynı basit döküm tekniği ile de elde edilebilir.

double d = 135.0;
int integerValue = (int) d ;

Çift değer açıkça aşağı yayın olarak da adlandırılan tamsayı değerine dönüştürülmesine rağmen.


38
2017-07-02 10:14





Bir sarmalayıcı sınıfının mutlaka başka bir sınıfa sarılması gerekmez. Örneğin, bir API sınıf sarma işlevselliği olabilir. Bir dll dosyası.

Örneğin, tüm dll başlatma ve temizleme işlemlerini gerçekleştiren bir dll sarmalayıcı sınıfı yaratılması ve ör. GetProcAddress().

Şerefe!


17
2018-05-20 17:21





Bir sarmalayıcı sınıfı, tıpkı adı gibi, başka bir şeyin etrafında "saran" bir sınıftır.

Daha resmi tanımı, onu uygulayan bir sınıf olacaktır. Adaptör kalıbı. Bu, bir API kümesini daha kullanışlı, okunabilir bir formata dönüştürmenize olanak tanır. Örneğin, C # 'de, yerel Windows API'sini kullanmak istiyorsanız, bunu .NET tasarım yönergelerine uyan bir sınıfa sarmaya yardımcı olur.


8
2018-05-20 17:18



Bağdaştırıcı modelini anladığımda, bir sarıcıdan farklıdır: eğer X X'i sararsa, X'in kapsüllemesi gerekir. belirtmek, bildirmek Y, ama kimliğini değil. Her ikisi de bir Y'yi sarmış olan X'in iki örneği göz önüne alındığında, X'in her iki örneğinin de sarıldığını kanıtlayabilecek hiçbir araç bulunmamalıdır. aynı Y.'nin tersine, bir bağdaştırıcı nesnesi genellikle kimliği değil, durumu kapsülleyecektir; Uyarlanan nesneye yapılan bir değişiklik, adaptörün kendisinde bir değişiklik olarak kabul edilmeyecektir. - supercat


Sarıcı sınıfları olarak adlandırılabilecek birkaç tasarım deseni vardır.

Cevabımı gör "Proxy, Dekoratör, Adaptör ve Köprü Modelleri nasıl farklıdır?"


8
2018-05-20 17:43





Bazı ortamlarda, sarıcı sınıfların yapabileceği şeylerin çoğunun yerini alması dikkat çekicidir.

DÜZENLE:

Genelde, bir ambalajcı, ambalajın uygulanması hakkında endişe duymadan sargının ne yaptığı konusunda genişleyecektir, aksi halde sarılmış sınıfı genişletmek için bir kaydırma noktası yoktur. Tipik bir örnek, o arayüzün her uygulamasına eklemenin aksine, zamanlama bilgilerini veya diğer bazı servis arayüzleri etrafında kayıt fonksiyonlarını eklemektir.

Bu daha sonra Aspect programlama için tipik bir örnek olarak biter. Bir arayüz fonksiyonundan fonksiyona geçip boilerplate logging eklemekten ziyade, yön programlamada metotlar için bir çeşit düzenli ifade olan bir pointcut'u tanımlarsınız ve sonra eşleşen tüm metotlardan önce, sonra veya sonra yürütmek istediğiniz yöntemleri ilan edersiniz. pointcut. Yönlendirme programlarının, sarmalayıcı sınıflarının da kullanılabildiği, ancak her iki teknolojinin de başka kullanımları olduğu bir tür dekoratör modelinin bir tür kullanımı olduğunu söylemesi muhtemelen büyük bir olasılıktır.


7
2017-09-09 05:11





Sarıcı sınıf, başka bir sınıfı sarmalayan ve istemci ile sarılmış orijinal sınıf arasındaki soyutlamayı sağlayan bir sınıftır.


7
2018-05-20 17:25





bir sarmalayıcı sınıfı genellikle özel bir özellik olarak bir nesneyi içeren bir sınıftır. sarıcı, özel nesnenin API'sini uygular ve böylece özel nesnenin alacağı bir argüman olarak geçirilebilir.

koleksiyonunuz olduğunu ve nesneler eklendiğinde bir tür çeviri kullanmak istediğinizi söyleyin - tüm koleksiyonun yöntemlerine sahip bir sarmalayıcı sınıf yazdınız. add () çağrıldığında, sarıcı argümanları yalnızca özel koleksiyona aktarmak yerine çevirir.

sarıcı her yerde kullanılabilir, bir koleksiyon kullanılabilir ve özel nesne hala ona değinen ve okuyan başka nesnelere sahip olabilir.


5
2018-05-20 17:18



Kabul ediyorum, sarmalayıcılar hakkındaki kişisel görüşüm orijinal tip gibi görünüyorlar ve hissediyorlar ve aynı arabirimi uygulayabilir, sarılmış örneğin durumunu kesin olarak tutabilir. Üyelerle çağrıları "kesmek" için bir yol olarak varlar. - Luke Puplett