«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Родство или способности, используются оба этих критерия.

Родство или способности, используются оба этих критерия.

Опубликовано 8 ноября 2024 г.
Просматривать:523

Relationship or ability, both of these criteria are used

В обществе при оценке способностей и ценности человека часто существует два разных критерия: один «основан на отношениях», а другой «основан на способностях». Оба стандарта воплощены в разных культурах, отраслях и личных ценностях, каждый из которых имеет своих сторонников и противников.

В языках программирования существует два типа стандартов, которые организуют код по-разному, связывая структуры данных с функциями. В этой статье кратко обсуждается применение и принцип действия этих двух общих стандартов.

модель класса

В языке Javascript предусмотрено ключевое слово class, которое мы можем использовать для определения классов. Важно отметить, что классы являются расширяемыми, и когда методы вызываются в экземпляре, они ищут определения методов в порядке цепочки прототипов. Например:


class Animal {
    move() { return 'move' }
}
class Monkey extends Animal {
    jump() { return 'jump' }
}
class Human extends Monkey {
    write() { return 'write' }
}


extends Ключевые слова могут помочь нам определить новый класс, который расширяет другие классы. Мы можем получить цепочку прототипов следующим образом:


let me = new Human()
let proto = me.__proto__
let r = []

while (proto !== null) {
    r.push(proto.constructor.name)
    proto = proto.__proto__
}


Мы получим r вот так: ['Человек', 'Обезьяна', 'Животное', 'Объект']. Когда мы вызываем метод, успех вызова метода зависит от того, есть ли соответствующее определение в цепочке прототипов. Например, если вы вызываете me.move(), у него есть определение в классе Animal, и вызов завершается успешно.

Это модель класса, которую я называю «реляционной» моделью, которую можно вызывать, если она определена в классе самого экземпляра или в родительском классе, родительском классе и т. д. на.

Модель, основанная на компетенциях

По сравнению с моделью, основанной на отношениях, модель, основанная на компетенциях, намного проще. Пока экземпляр удовлетворяет определенному признаку, соответствующий метод может действовать на экземпляр независимо от отношения экземпляра.


let me = {
    moveable: true,
    freezable: false
}

function move(x) { return x.moveable ? 'move' : undefined }
function freeze(x) { return x.freezable ? 'freeze' : undefined }


В этой модели данные и методы независимы друг от друга. Преимущество в том, что оно краткое и простое, но недостаток очевиден: из-за независимости метода и данных его определение трудно переопределить.

краткое содержание

После представления двух способов соединения структур данных и методов мы можем подумать, что когда необходимо реализовать методы с разными одноимёнными функциями в соответствии с классом данных, рекомендуется использовать модель реляционного класса. . Когда метод обычно относительно фиксирован, а данные изменяемы и один и тот же метод работает с разными данными, можно использовать модель, основанную на компетенциях.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/linjiezhang/relationship-or-ability-both-of-these-criteria-are-used-1dbd?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected] удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3