Вы можете сделать это обоими способами.Вы также можете сделать это, имея обе концепции одновременно.Наличие конкретного ShiMotorcycleCommand
, который происходит от класса или реализует интерфейс ShipVehicleCommand
, может быть полезным.Это зависит от требований как к вашему домену , так и к вашей реализации.
Поскольку DDD рекомендует вам моделировать в домене вашей системы, вам следует использовать вездесущий язык , который вы и ваши эксперты по доменам используете для получения ваших концепций.
Если ваш домен обобщает эти концепции и использует концепцию Автомобиль больше, чем использует более конкретные, такие как Автомобиль , Грузовик и Мотоцикл , используйте ShipVehicle
.Если это не так, используйте ShipCar
, ShipTruck
и ShipMotorcycle
вместо.
Используйте ваш домен , чтобы направлять вас.
Если во время вашей реализации вынайти полезную общую концепцию, а затем добавить ее.Если вы не думаете, что это приносит какую-то ценность и запутывает систему, не делайте этого.Если он у вас есть и он действительно запутывает вашу систему, удалите его.
DDD рекомендует использовать итеративные (гибкие) процессы с рефакторингом для изменения вашей модели по мере ее обнаружения и получения дополнительной информации о ней.Начните с вашего домена и посмотрите, куда он вас приведет.
Когда я начал работать с DDD, одна из вещей, на которые я обратил внимание, это то, что как разработчик, обладающий знаниями в области шаблонов проектирования и архитектур,У меня была тенденция абстрагироваться много с самого начала.Когда я остановился и начал больше думать о конкретных концепциях своей области, моделирование стало намного проще.Теперь я обобщаю и обобщаю, когда узнаю больше о domain и system .