Mixin по сравнению с наследованием

Я думаю, что вы должны завершить внутреннюю наблюдаемую, а не всю последовательность. (takeWhile должен быть передан по интервалу);

Вы должны использовать switchMap только в том случае, если вы готовы отклонить старую последовательность, как только появится новое событие щелчка. mergeMap или concatMap в противном случае. ]

const sequence = () => interval(500).pipe(take(10));

fromEvent(button, 'click').pipe(
    switchMap(sequence),
)
90
задан Johnd 7 January 2012 в 21:18
поделиться

3 ответа

Смешивание обычно используется с множественным наследованием. Таким образом, в этом смысле «нет никакой разницы».

Суть в том, что Mix in редко используется как отдельный объект.

Например, скажем, у вас есть Mix In с именем ColorAndDimension, которое добавляет свойство цвета, ширину и высоту.

Теперь вы можете добавить ColorAndDimension, скажем, к классу формы, классу Sprite, классу автомобиля и т. д. И все они будут иметь одинаковый интерфейс (скажем, get / setColor, get / setHeight / Width и т. д.)

Итак, в общем случае наследование Mix in IS. Но вы можете утверждать, что это вопрос роли класса в общем домене относительно того, является ли Mix in "первичным" классом или просто смешанным.

Изменить - просто для пояснения.

Да, Mix In на современном современном жаргоне можно рассматривать как Интерфейс со связанной Реализацией. На самом деле это обычное, старое, повседневное множественное наследование с использованием простого, старого, повседневного класса. Это просто конкретное приложение MI. Большинство языков не имеют особого статуса Mix In, это просто класс, который был разработан для «смешивания», а не для использования отдельно.

60
ответ дан 24 November 2019 в 07:07
поделиться

подмешивание - это особый, ограниченный случай (множественного) наследования, используемый для целей реализации; некоторые языки (например, Ruby) поддерживают его без поддержки обобщенного множественного наследования.

18
ответ дан 24 November 2019 в 07:07
поделиться

«Миксин - это фрагмент класса в том смысле, что он предназначен для создания с другими классами или миксинами». -DDJ

Примесь - это класс или фрагмент кода, который не предназначен для автономного использования, но вместо этого вы должны использовать его внутри другого класса. Либо составьте его как поле / переменную члена, либо как сегмент кода. Я больше всего знаком с последним. Это немного лучше, чем копирование и вставка шаблонного кода.

Вот отличная статья DDJ, которая знакомит с этой темой.

Half-Life 2 / "Source" SDK - отличный пример миксинов C ++. В этой среде макросы определяют значительные блоки кода, которые могут быть добавлены, чтобы придать классу особый «вкус» или функцию.

Посмотрите на пример исходной вики: Создание логической сущности . В примере кода макрос DECLARE_CLASS можно рассматривать как миксин. Source SDK широко использует миксины для стандартизации кода доступа к данным и описания поведения сущностей.

3
ответ дан 24 November 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: