Когда вы получаете аргументы в строковом формате из пользовательского интерфейса внутри вашего контроллера, передаете ли вы строки в службу приложения (или для команды) напрямую?
Или вы создаете объекты значения из строк внутри контроллера?
new Command(new SomeId("id"), Weight.create("80 kg"), new Date())
или
new Command("id", "80 kg", new Date())
new Command("id", "80", "kg", new Date())
Возможно, это не важно, но меня это беспокоит.
Вопрос в том, должны ли мы связывать объекты значений из домена с внутренним контроллером?
Представьте, что у вас нет веб-интерфейса между вашим уровнем приложения и уровнем представления (например, активностью orroid или swing), вы бы использовали использование объектов значения в пользовательском интерфейсе?
Другое дело, вы сериализуете /unserialize объекты значения в/из строки, как это?
Weight weight = Weight.create("80 kg");
weight.getValue().equals(80.0);
weight.getUnit().equals(Unit.KILOGRAMS);
weight.toString().equals("80 kg");
В случае передачи строк в команды я предпочел бы передать "80 кг" вместо "80" и "кг".
Извините, если вопрос не имеет значения или забавный.
Спасибо.
UPDATE
Я столкнулся с этим сообщением, когда искал информацию о совершенно другой теме: Объекты Value в CQRS - где использовать
Они, кажется, предпочитают примитивы или DTO, и сохраняют VO внутри домена.
Я также взглянул на книгу В. Вернона (Реализация DDD), и он говорит о (точно -_-), что в главе 14 (стр. 522)
Я заметил, что он использовал команды без каких-либо DTO.
someCommand.setId("id");
someCommand.setWeightValue("80");
someCommand.setWeightUnit("kg");
someCommand.setOtherWeight("80 kg");
someCommand.setDate("17/03/2015 17:28:35");
someCommand.setUserName("...");
someCommand.setUserAttribute("...");
someCommand.setUserOtherAttributePartA("...");
someCommand.setUserOtherAttributePartB("...");
Это объект команды, который будет отображаться контроллером. Инициализация объектов значений будет выглядеть в методе обработчика команд, и они будут бросать что-то в случае плохого значения (самооценка при инициализации).
Я думаю, что я начинаю меньше беспокоиться, но некоторые другие мнения будут приветствоваться.