В моей системе реализован шаблон команд, в основном потому, что у меня есть несколько уровней, и мне нужно удаленно вызывать логику.
class DoWorkCommandMessage { int param; }
class DoWorkCommandHandler : Handler<DoWorkCommandMessage>
{
Execute(MyObject object) {
object.DoWork(message.param);
}
}
class MyObject
{
void DoWork(int param) {
_proxy.SendMessage(new DoWorkBinaryMessage(param));
}
}
Как вы можете видеть, я в основном получаю сообщение, преобразуяэто в вызов метода, который затем преобразует его обратно в сообщение, которое отправляется на другой уровень.
Я чувствую, что здесь что-то не так.
Я закончил рефакторинг MyObject для удалениявсе методы и заменили их простым методом ProcessMessage, который принимает сообщение, переводит его, затем отправляет его.
Это было нормально, за исключением того, что MyObject оказался в основном просто кодом преобразования, а не «объектом»..
Чтобы выполнить модульное тестирование, я должен продолжать вызывать ProcessMessage () вместо простого вызова метода.
Я ищу мысли об этой битве между "обмен сообщениями и преобразованиями" против "сообщения -> метод -> сообщения "подход.Очевидно, что сообщения и методы очень тесно связаны.