Я думаю, что они отличаются друг от друга «как вы проектируете и какова ваша общая философия» в самой системе.
С луковой архитектурой весь мир вокруг вашего хранилища данных.Это означает, что вам не важно, как вы «выполняете работу», но вам важнее «я хочу, чтобы работа была выполнена».Очевидно, что лучшие практики (маленькие методы, хорошие имена переменных, может быть, некоторые шаблоны проектирования, такие как Sigleton и т. Д.) Все еще имеют значение в этой области видимости, но больше для самого кода, но не больше для всего обзора приложения.
С другой стороны, когда мы говорим о DDD, мы говорим о бизнесе, и когда мы принимаем решение об архитектуре, у нас всегда есть бизнес-модель, которую мы хотим решить.И когда я говорю «решение», я имею в виду общее количество решений, которые может принимать система (от имен переменных, классов и функций, до места размещения части кода и, в конце концов, как мы говорим о самой этой системе).Можно сказать, что DDD - это «программная абстракция» бизнес-модели).Но, конечно, мы не можем сделать так, чтобы у DDD не было бизнеса для решения проблемы. Мы не можем создать DDD для таких программ, как Shazam, но мы можем создать DDD для таких программ, как Facebook или Spotify.нельзя смешивать друг друга, но вместо этого это первое решение.