Это несколько связано с Заменяет ли функциональное программирование шаблоны дизайна GoF?
С момента появления лямбда и динамики в С# существуют ли какие-либо стандартные шаблоны проектирования, которые можно считать устаревшими или решенными каким-либо другим способом с использованием lambdas или других языковых функций?
Например, динамические функции С# теперь могут использоваться для выполнения нескольких методов. http://achoiusa.wordpress.com/2009/08/27/exploring-c-4-0-multimethods/ (Я думаю, что у Марка Гравелла было какое-то сообщение об этом?)
Лично я склонен делать фабрики, используя Func of T nowdays.
например.
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(...);
У кого-нибудь есть другие примеры?
[Изменить] Конечно, шаблоны не устаревают сами по себе, но некоторые шаблоны являются специфическими для парадигмы, и поэтому, поскольку С# теперь является мультипарадигмой, некоторые функциональные свойства С# могут сделать некоторые из рисунков ООП менее привлекательными.