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

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

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

Некоторые из общеизвестных Вы перечислили. Ещё можно посмотреть, например, здесь: 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 - авторизация и аутентификация, например, получение списка записей на основе параметров из запроса. Редко использую.

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

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

Войти через центр авторизации
Похожие вопросы