Данный репозиторий является одним из примеров реализации паттерна Data Mapper
Если коротко, то в данном репозитории вы можете найти:
- Entity - Описание сущности. В качестве примера в данном проекте находится сущность
message. Сущность объеденяет вокруг себя следующие элементы:- Model - содержит описание сущности, а так же методы для работы с ними.
- Collection - содержит список сущостей, а так же методы работы с ними.
- Mapper - реализует общий интерфейс мапперов, а так же два абстрактных метода
createModelиcreateCollectionчто являются уникальными для каждого отдельного маппера и используются для маппинга пришедших с респонса джейсончиков в сущности.
- Adapter - Описывает ендпоинты конкретного источника данных. Будь то БД или апишка. Название может многих натолкнуть на мысль об одноименном паттерне, и это имеет смысл. Если посмотреть широко, мы с помощью адаптера согласуем интерфейс наших мапперов с внешним источником данных.
- Factory - Сейчас это обычная статическая фабрика. В случае появляния нового источника данных (нового адатера) можно допилить эту фабрику в абстрактную фабрику
Так же в этом репозитории вы можете видеть использование и иных классов, к примеру Transaction или RequestCriteria, но самих классов в этот репозиторий я добавлять не стал что бы не усложнять ревью.