Я пытаюсь найти решение, в котором класс, который обрабатывает «сообщение», выбирается во время выполнения в зависимости от типа сообщения.Я знаю, что могу использовать что-то вроде этого
if msg_type = "A"
MsgAProcessor.execute(message);
else if msg_type = "B"
MsgBProcessoror = execute(message);
....
....
....
. Я не хочу использовать вышеупомянутый подход, так как я не хочу, чтобы код знал что-либо о типах сообщений, которые я мог бы обрабатывать.Я хочу иметь возможность в будущем добавить новый процессор сообщений для нового типа сообщений.Решение, о котором я сейчас думаю, заключается в следующем:
На данный момент существует 3 обработчика сообщений
MsgAProcessor
MsgBProcessor
MsgBProcessor
Все три класса имеют метод с именем execute, который обрабатывает сообщение в егособственный путь.Я создал интерфейс с именем MsgProcessor и добавил в него метод execute ().
Теперь я испытываю затруднения в знании того, какой процессор сообщений должен вызывать вызывающий абонент без необходимости проверять тип сообщения.Например, я не могу сделать этопосле выяснения типа сообщения.Я также хотел бы избежать создания экземпляров с использованием типа класса реализации.
Есть ли лучший способ добиться того же?
Я хочу иметь возможность просто вызвать MsgProcessor.execute из интерфейса, и среда выполнения знает, какой класс реализации вызывать, основываясь на типе сообщения.