dmitriylanets
@dmitriylanets
веб-разработчик

Какой ваш оптимальный набор паттернов?

Со временем при достижении определенного опыта начинаешь понимать что стандартного набора классов в парадигме MVC начинает не хватать, поэтому смотря в сторону DDD, возникает другое ощущение, что паттернов предлагаемых этим подходом к проектированию и разработке слишком много. Пока для себя выделил:
1. Entity. Сущность, содержит сеттеры и гетеры, только логика связанная с сущностью.
2. Service. Сервис, содержит основную бизнес логику.
3. Repository. Содержит основные CRUD операции с хранилищем.
4. DataMapper. Преобразовывает данные получаемые из хранилища в объект сущности.
Какой стандартный набор архитектурных решений у вас?
  • Вопрос задан
  • 1639 просмотров
Пригласить эксперта
Ответы на вопрос 2
max-kuznetsov
@max-kuznetsov
Главный IT-архитектор
Я отношусь к паттернам проще. Паттерн - это некий компонент архитектуры (логической, физической, поведения и т.п.), который я как архитектор могу многократно применять при работе над архитектурой системы. Есть компоненты, которые известны всем, и есть те, которые нужны только мне вследствие специфики разрабатываемых мной систем. Я могу объединять неколько паттернов в один, могу дорабатывать существующий паттерн до нужной мне кондиции, могу что-то сделать совсем своё.

Некоторые из общеизвестных Вы перечислили. Ещё можно посмотреть, например, здесь: Catalog of Patterns of Enterprise Application Arch.... Возможно, многие из этих паттернов Вы тоже используете, только не называли их в своём вопросе. Но со временем, возможно, у Вас накопятся собственные наработки.
Ответ написан
Комментировать
trevoga_su
@trevoga_su
В MVC не должно быть "стандартного набора классов", это парадигма. Все стандартные наборы классов - не больше чем архитектура, навязанная вам монополистами-фреймворками.

В моем самописном решении так:

Model - это одна строка в БД, имеющая первичный ключ и представляющая собой какую-либо сущность, которой оперирует программа. Это класс с set/get + бизнес логика относящаяся к этой модели.
Например: $user->getFullNameOrLogin()(); // возвращает полное имя пользователя или логин. Это бизнес-логика конкретной модели.

DataMapper - CRUD над Entity.
$userMapper->findById(1) найдет запись в таблице user и на основании строки таблицы инстанцирует и возвратит Model этого пользователя.

Service - авторизация и аутентификация, например, получение списка записей на основе параметров из запроса. Редко использую.

дальше лень писать пойду покурю..
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы