Здравствуйте, licedey, Вы писали:
L>·>Да какая разница. Вместо явного типа CreditCardValidatorFactory ты используешь догадайся-что-я-имел-в-виду Func<CreditCard, IRule>.
L>·>Если так рассуждать, то и IRule можно заменить, пиши уж сразу Func<CreditCard, Func<bool>>.
L>Разница в избавлении от лишнего класса, как в решении выше и использовании паттерна Factory. По моему из имени параметра и названии класса понятно, "что я имел ввиду"
А ты напиши полный аналог приведённому в начальном сообщении.
Тогда станет очевидно, что от класса ты не избавился, ты просто использовал стандартный Func интерфейс. Тебе всё равно придётся где-то его имплементировать и получится тот же самый CreditCardValidatorFactory где-то в коде. В лучшем случае в виде безымянного класса (лямды). Да ещё и зависимость от фреймворка предложил.