Разве не слишком легко запутаться в таком количестве типов моделей?
Ну, и да, и нет. Сначала, может быть нелегко определять подходящий тип модели, но как только вы наберетесь опыта вы начнете делать это интуитивно. Просто помните о том, что типы моделей улучшает структуру ваших моделей предметной области.
Когда вы пишете ваше собственное приложение, вас может сбить с толку необходимость выбрать, к какому типу модели принадлежит ваш класс (является ли он сущностью, объектом-значением, репозиторием, сервисом или фабрикой). Ниже представлен простой алгоритм, чтобы упростить выбор корректного типа модели при написании своего приложения:
FileUploader
или VersionChecker
Хмм... А что если я просто буду хранить все мои модели в одной единственной директории Model?
Конечно, вы можете, если очень этого хотите. Но в таком случае, когда вы будете использовать библиотеку Doctrine ORM, вы заметите, что она также пользуется принципами DDD, так что использование DDD делает ваше приложение упорядоченным.