Sobes.tech
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() // Չեմ կարող թռչել

Այսպիսով, կոմպոզիցիան ավելի մեծ ճկունություն է ապահովում և հեշտացնում է կոդի սպասարկումը։