Katma (Mixin)
Mixinler, kodunuzu birden çok sınıf hiyerarşisinde yeniden kullanmanın bir yoludur. Birçok üye uygulaması sağlamak amacıyla tasarlanmıştır.
Mixin kullanmak için, bir veya daha fazla mixin adından sonra gelen "with" anahtar kelimesini kullanın. Aşağıdaki örnek, iki sınıfın mixin'leri kullandığı bir durumu göstermektedir:
Mixin tanımlamak için, mixin deyimini kullanın. Nadir durumlarda bir mixin ve bir sınıfı aynı anda tanımlamanız gerekiyorsa, mixin sınıfı deyimini kullanabilirsiniz.
Mixin ve mixin sınıfları "extends" kısmına sahip olamaz ve üretici kurucu bildirimi yapmamalıdır.
Örneğin:
Bazen bir mixin'in kullanabileceği türleri sınırlamak isteyebilirsiniz. Örneğin, mixin, tanımlamadığı bir yöntemi çağırabilme yetisine bağlıysa, mixin'in kullanımını "on" anahtar kelimesiyle zorlayabilirsiniz:
Yukarıdaki kodda, MuzikalSanatci mixin'ini yalnızca Muzisyen sınıfını genişleten veya uygulayan sınıflar kullanabilir. Çünkü SarkiciDansci sınıfı Muzisyen'i genişlettiği için MuzikalSanatci mixin'ini kullanabilir.
Sınıf, mixin veya mixin sınıfı? (Class, Mixin or Mixin Class)
Mixin tanımı bir mixin'i belirtir. Sınıf tanımı bir sınıfı belirtir. Mixin sınıfı tanımı ise, aynı ad ve aynı türle hem düzenli bir sınıf hem de bir mixin olarak kullanılabilen bir sınıfı belirtir.
Sınıflar veya mixin'ler için geçerli olan kısıtlamalar, mixin sınıfları için de geçerlidir:
Mixin'lerin "
extends
" veya "with
" kısmı olamaz, bu nedenle mixin sınıfları da olamaz.Sınıfların "
on
" kısmı olamaz, bu nedenle mixin sınıfları da olamaz.
Soyut Mixin Sınıfı (Abstract Mixin Class)
Bir mixin sınıfının "on" direktifi için benzer bir davranışı başarabilirsiniz. Mixin sınıfını soyut yapın ve davranışının bağlı olduğu soyut yöntemleri tanımlayın:
Muzisyen mixin'ini soyut olarak tanımlayarak, onu kullanan herhangi bir türü davranışının bağlı olduğu soyut yöntemi tanımlamaya zorlarsınız.
Bu, "on
" direktifinin bir mixin'in bağımlı olduğu arabirimlere erişim sağladığı şekilde benzer bir işlevi yerine getirir.
Last updated