в c#, каково различие между стратегической моделью и делегатами?

Вы можете создать ссылку с обратными вызовами ref без использования конструктора. <input ref={(element) => { this.inputRef = element; }} /> это то, что вам нужно.

7
задан user151019 8 May 2012 в 16:50
поделиться

5 ответов

Помещенный просто, можно использовать делегатов для реализации стратегической модели.

Стратегическая модель является шаблоном. Делегаты являются функцией языка. Вы используете функцию языка для реализации шаблона. Они находятся в двух отдельных категориях понятий в целом, но связаны в их взаимодействии друг с другом.

Другими словами, стратегическая модель является проектом, делегаты C# являются кирпичами. Вы не можете создать (стратегическая модель) дом без также. (Вы могли создать его с другими видами кирпичей также, но ничто в функции языка делегатов по сути не описывает стратегическую модель).

14
ответ дан 6 December 2019 в 12:55
поделиться

Шаблоны разработки являются агностиком языка, высокоуровневыми решениями обычно-возникших-проблем.

Делегаты могут использоваться в определенной для платформы реализации стратегической модели для.NET, но не являются единственным способом реализовать такое решение.

Альтернативное решение состоит в том, чтобы определить интерфейс как:

public interface IStrategy
{
    void DoStuff(...)
}

Стратегии были бы затем представлены классами, реализовав этот интерфейс, а не делегатом.

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

2
ответ дан 6 December 2019 в 12:55
поделиться

Как еще Вы реализовали бы стратегическую модель в C#?

0
ответ дан 6 December 2019 в 12:55
поделиться

Шаблоны являются вопросом архитектуры. Делегаты являются вопросом реализации.

В C# стратегическая модель будет почти всегда реализовываться с помощью делегата.

0
ответ дан 6 December 2019 в 12:55
поделиться

Стратегическая модель является шаблоном разработки, который позволяет Вам выбирать отличные функции во время выполнения, в то время как делегат является конструкцией языка, которая позволяет Вам создавать ссылку на функцию и использовать ее в качестве переменной.

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

0
ответ дан 6 December 2019 в 12:55
поделиться
Другие вопросы по тегам:

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