Это в некоторой степени связано с Заменяет ли функциональное программирование шаблоны проектирования GoF?
С момента появления лямбда-выражений и динамики в C # существуют ли какие-либо стандартные шаблоны проектирования, которые можно было бы рассмотретьустарел или решен каким-либо другим способом с использованием лямбда-выражений или других языковых функций?
Например, динамические функции C # теперь можно использовать для выполнения нескольких методов.http://achoiusa.wordpress.com/2009/08/27/exploring-c-4-0-multimethods/ (я думаю, что у Марка Гравелла был какой-то пост об этом?)
Лично я склонен работать на фабриках с использованием Func of T в наши дни.
например
public static class SomeFactory
{
public static Func<IUnitOfWork> GetUoW =
() => new EF4UoW(new SomeModelContainer());
}
// usage
var uow = SomeFactory.GetUoW();
// testabillity
var testUoW = new InMemUoW();
testUoW.Add(new Customer()...);
SomeFactory.GetUoW = () => testUoW;
// the service can get an UoW using the factory
var result = SomeDomainService.DoStuff(...);
У кого-нибудь есть другие примеры?
[Редактировать] Конечно, шаблоны сами по себе не устаревают, но некоторые шаблоны специфичны для парадигмы и, следовательно, поскольку C # теперь является мульти парадигмой, некоторые из функциональных свойствC # может сделать некоторые из шаблонов ООП менее привлекательными.