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() // Мен учалбайм
Бул ыкма көбүрөөк ийкемдүүлүк берет жана кодду тейлөөдө жеңилдик түзөт.