Один шаблон, который приходит на ум, это Цепочка ответственности (возможно, не шаблон создания)
Во-первых, вам нужны RequestHandlers
public interface IRequestHandler
{
bool CanHandle(Request req);
void Handle(Request req);
}
public class LargeRequestHandler : IRequestHandler
{
public bool CanHandle(Request req)
{
return (req.Type == RequestType.SomeVal && req.id > 1000);
}
public void Handle(Request req)
{
processors.Add(new ProcessLargeRequest(request));
}
}
public class SmallRequestHandler : IRequestHandler
{
public bool CanHandle(Request req)
{
return (req.Type == RequestType.SomeVal && req.id < 1000);
}
public void Handle(Request req)
{
processors.Add(new SmallLargeRequest(request));
}
}
... аналогичнопродолжайте добавлять классы для большего количества обработчиков, сколько вам нужно.
Затем создайте цепочку из этих обработчиков, например
public class RequestChain
{
IRequestHandler[] handlers;
public RequestChain()
{
handlers = new[] { new LargeRequestHandler(), new SmallRequestHandler() };
}
public void ProcessRequest(Request req)
{
foreach (var handler in handlers)
{
if (handler.CanHandle(req))
{
handler.Handle(req);
}
}
}
}
Надеюсь, это поможет.Приветствия.