Junior — Middle
Դու նախընտրում ես համակարգերի նախագծման ժամանակ ժառանգականությունը կամ կոմպոզիցիան օգտագործել?
sobes.tech AI
Պատասխան AI-ից
Համակարգերի նախագծման ժամանակ սովորաբար նախընտրում են կոմպոզիցիան ժառանգությունից:
Ինչու՞։
- Ժառանգությունը ստեղծում է խիստ հիերարխիա, որը կարող է առաջացնել խնդիրներ փոփոխությունների և կոդի բարդացման ժամանակ:
- Կոմպոզիցիան թույլ է տալիս ստեղծել օբյեկտներ բաղադրիչներից, ինչը դարձնում է համակարգը ավելի ճկուն և ընդլայնելի:
Օրինակ՝ փոխանակ ստեղծելու դաս "Թռչուն" և ժառանգելուց "ԹռչողԹռչուն" և "ԵզրակացԹռչուն"-ից, ավելի լավ է ստեղծել դաս "Թռչուն", որը պարունակում է վարքագծի օբյեկտներ (օրինակ՝ թռչել, վազել): Այսպես, դուք կարող եք դինամիկ փոփոխել վարքագիծը առանց հիերարխիան փոխելու:
iOS-ում հաճախ օգտագործվում են պրոտոկոլներ և դելեգատներ, ինչը կոմպոզիցիայի ձև է:
Swift-ում օրինակ՝
protocol Flyable {
func fly()
}
class Bird {
var flyingAbility: Flyable?
func performFly() {
flyingAbility?.fly()
}
}
class CanFly: Flyable {
func fly() {
print("Ես թռչում եմ")
}
}
class CannotFly: Flyable {
func fly() {
print("Չեմ կարող թռչել")
}
}
let sparrow = Bird()
sparrow.flyingAbility = CanFly()
sparrow.performFly() // Ես թռչում եմ
let penguin = Bird()
penguin.flyingAbility = CannotFly()
penguin.performFly() // Չեմ կարող թռչել
Այսպիսով, կոմպոզիցիան ավելի մեծ ճկունություն է ապահովում և հեշտացնում է կոդի սպասարկումը։