Sobes.tech
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.