Программа получает список сообщений (базовый тип). Каждое сообщение в списке должно обрабатываться в соответствии с типом (тип потомка). Однако для правильной обработки разные сообщения нуждаются в разных входах.
Как называется следующий метод? (Я не проверял этот код в компиляторе)
abstract class MessageProcessor
{
public static MessageProcessor GetProcessor(Message message, DataDomain data)
{
if (message.GetType() == typeof(FooMessage))
{
return new FooMessageProcessor(message, data.Name, data.Classification);
}
else if (message.GetType() == typeof(BarMessage))
{
return new BarMessageProcessor(message, data.AccountNo, data.CreditLimit);
}
else
throw new SomeException("Unrecognized type");
}
public abstract void Process();
}
И этот?
static class MessageProcessorFactory
{
public static MessageProcessor GetProcessor(Message message, DataDomain data)
{
if (message.GetType() == typeof(FooMessage))
{
return new FooMessageProcessor(message, data.Name, data.Classification);
}
else if (message.GetType() == typeof(BarMessage))
{
return new BarMessageProcessor(message, data.AccountNo, data.CreditLimit);
}
else
throw new SomeException("Unrecognized type");
}
}
И что он называется, если я могу ввести класс ProcessBuilder в MessageProcessor (используя свойство или Setter), а затем вызвать Process?
Какая техника была бы лучшим образцом для решения этой проблемы?