Возьмите кучу IProcess
. Реализации найдете правильный вариант, основанный на реализации CanProcess
.Что такое шаблон дизайна?
public interface IProcess
{
bool CanProcess(string name);
Task Process();
}
public class Processor
{
private readonly IEnumerable<IProcess> _processors;
public Processor(IEnumerable<IProcess> processors)
{
_processors = processors;
}
public void Process(string name)
{
Guard.RequireNonNullOrEmpty(name, "name");
// this could allow for processing multiple matches
var processor = _processors.FirstOrDefault(r => r.CanProcess(name));
if (processor!= null)
{
processor.Process();
}
}
}
Может кто-нибудь посоветует имя этого шаблона, посмотрел на несколько, но, похоже, не подходит.
Это шаблон 'Command', который также использует шаблон' Tester/Doer'. –
Каково название шаблона здесь для определения правильной реализации IProcess, поскольку их может быть много, что не подходит. –
Я не думаю, что есть образец, чтобы описать это. Это просто запрос. Не каждый бит кода должен быть связан с формальным шаблоном проектирования. –