Junior — Middle
Sistemleri tasarlarken kalıtım mı yoksa bileşim mi kullanıyorsunuz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Sistem tasarımında, genellikle kalıtım yerine bileşime öncelik verilir.
Neden?
- Kalıtım, değişiklikler ve kodun karmaşıklaşması sırasında sorunlara yol açabilecek katı bir hiyerarşi oluşturur.
- Bileşim, nesneleri bileşenlerden oluşturmaya izin verir, bu da sistemi daha esnek ve genişletilebilir kılar.
Örneğin, "Kuş" sınıfı oluşturmak ve ona "UçanKuş" ve "KoşanKuş" kalıtmak yerine, "Kuş" sınıfı oluşturmak ve davranış nesneleri (örneğin, uçmak, koşmak) içermesini sağlamak daha iyidir. Böylece, hiyerarşiyi değiştirmeden davranışı dinamik olarak değiştirebilirsiniz.
iOS'ta sık sık protokoller ve delegeler kullanılır, bu da bir tür bileşimdir.
Swift'te örnek:
protocol Flyable {
func fly()
}
class Bird {
var flyingAbility: Flyable?
func performFly() {
flyingAbility?.fly()
}
}
class CanFly: Flyable {
func fly() {
print("Uçuyorum")
}
}
class CannotFly: Flyable {
func fly() {
print("Uçamıyorum")
}
}
let sparrow = Bird()
sparrow.flyingAbility = CanFly()
sparrow.performFly() // Uçuyorum
let penguin = Bird()
penguin.flyingAbility = CannotFly()
penguin.performFly() // Uçamıyorum
Bu şekilde, bileşim daha fazla esneklik sağlar ve kodun bakımı kolaylaşır.