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() // Мен учалбайм

Бул ыкма көбүрөөк ийкемдүүлүк берет жана кодду тейлөөдө жеңилдик түзөт.