Этот вопрос о том, когда использовать и внедрять делегаты, а когда создавать экземпляры объектов. Допустим, я хочу смоделировать карточную игру и, возможно, захочу внедрить поведение для построения колоды и ее перетасовки. Поскольку это чистые методы без сохранения состояния, они кажутся идеальными кандидатами на роль статических. Создавать экземпляры класса для выполнения функции кажется глупым.
Однако по мере масштабирования проекта мы начинаем беспокоиться о глубокой вложенности объектов, повышении сложности и модульном тестировании.
Какая здесь хорошая практика для большого и сложного проекта? Работоспособен ли статический маршрут. Я знаю, что C# является первым объектно-ориентированным языком, поэтому он поощряет использование экземпляров объектов. Какие соображения лежат в основе этого решения? Возможные подводные камни?
new CardGame( DeckBuilders.CreateStandardDeck,
DeckShufflers.DefaultShuffle);
public class CardGame
{
public Deck Deck { get; private set; }
public CardGame(Func buildDeckMethod, Action shuffleMethod)
{
Deck = buildDeckMethod();
shuffleMethod();
}
public static class DeckShufflers
{
public static void DefaultShuffle(List cards) where T : ICard
}
public static class DeckBuilders
{
public static Deck CreateStandardDeck()
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ex-project