Junior — Middle
Sistemlərin dizaynında irsi və ya tərkib istifadəsinə meyllisiniz?
sobes.tech Süni İntellekt
AI-dan cavab
Sistemlərin layihələndirilməsində, adətən, irsiyyətə nisbətən kompozisiya üstün tutulur.
Niyə?
- İrsiyyət sərt ierarxiya yaradır və bu, dəyişikliklər və kodun mürəkkəbləşməsi zamanı problemlərə səbəb ola bilər.
- Kompozisiya obyektləri komponentlərdən yaratmağa imkan verir, bu da sistemi daha çevik və genişləndirilə bilən edir.
Məsələn, "Quş" sinfi yaratmaq və ondan "UçanQuş" və "QaçanQuş" irsi almaq yerinə, "Quş" sinfi yaratmaq və ona davranış obyektləri (məsələn, uçmaq, qaçmaq) daxil etmək daha yaxşıdır. Beləliklə, ierarxiyanı dəyişmədən davranışı dinamik şəkildə dəyişə bilərsiniz.
iOS-da tez-tez protokollar və nümayəndələr istifadə olunur, bu da kompozisiyanın bir formasıdır.
Swift-də nümunə:
protocol Flyable {
func fly()
}
class Bird {
var flyingAbility: Flyable?
func performFly() {
flyingAbility?.fly()
}
}
class CanFly: Flyable {
func fly() {
print("Mən uçuram")
}
}
class CannotFly: Flyable {
func fly() {
print("Mən uça bilmirəm")
}
}
let sparrow = Bird()
sparrow.flyingAbility = CanFly()
sparrow.performFly() // Mən uçuram
let penguin = Bird()
penguin.flyingAbility = CannotFly()
penguin.performFly() // Mən uça bilmirəm
Bu şəkildə, kompozisiya daha böyük çeviklik təmin edir və kodun saxlanmasını asanlaşdırır.