Мое понимание и мое видение этого предмета таковы:
Пакет по признакам - это вертикальная нарезка (структурирование исходного кода в соответствии с концепциями предметной области) вместо горизонтальной наслоения (структурирование в соответствии с техническими концепциями).
Но говорить «вместо» не совсем верно, поскольку есть момент, когда вы должны различать эти технические концепции.Было бы лучше сначала сказать «пакет за элементом», а затем пакет за слоем внутри каждого объекта.
В стратегическом DDD каждый ограниченный контекст (BC) представляет собой вертикальный фрагмент (целое приложение, полный стек ...с помощью пользовательского интерфейса, приложений, модели предметной области и слоев инфраструктуры).
Затем, в рамках BC, тактический DDD способствует сначала упаковке кода модели предметной области в бизнес-концепции, а затем в технические концепции (тактические шаблоны).Итак, у вас есть модули (группы агрегатов, которые тесно связаны и слабо связаны), и внутри каждого агрегата у вас есть сущности, объекты стоимости, фабрики, хранилище.Другие уровни (пользовательский интерфейс, приложение, инфра) также могут быть структурированы по модулям.
Таким образом, в качестве резюме DDD использует смешанный подход:
Упаковка по бизнесуконцепции с различными уровнями детализации: BC, модули, агрегаты.
Пакет за слоем внутри BC: пользовательский интерфейс, приложение, домен, инфраструктура.
PD: этот предмет (структура исходного кода) объясняется в главе 9 (Модули) книги Вона Вернона "Внедрение DDD".