Информация
- В рейтинге
- Не участвует
- Откуда
- Курган, Курганская обл., Россия
- Работает в
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Fullstack Developer, Software Architect
Senior
PHP
Docker
Database
OOP
Algorithms and data structures
Object-oriented design
Database design
Software development
Designing application architecture
Yii3 будет модульный, посмотрите возможно уже данный блок есть отдельно.
У вас есть пространство имен, и данные суффиксы не имеют смысла. А если уж и делать суффиксы, то полностью т.к. «C» — это очень неоднозначно (может это Controller, а можно это просто Class (по аналогии с I и T), или Classificier и т.д.
Yii2 виджеты, Битрикс (прости господи) компоненты.
По факту у вас обычная MVC, хотя в данной ситуации контроллер который просто возвращает модель как таковой не нужен (опять если делать референс в сторону Yii2 термин «виджет» больше подходит, нежеле «контроллер», хотя суть та же самая: модель -> виджет -> вьюха). Могли сократить сущности до модель — вьюха, а сам рендеринг скинуть на какую-то отдельную сущность например Renderer, т.к. для каждой модели не нужен отдельный контроллер.
ArticleC и HeaderC это че такое?)))
Дак собственно createInstance создает объект которые инициируется через конструктор (в коде пример неправильный, исправил). Реализацию контейнера я посчитал добавлять сюда лишнее, потому что речь не про DI.
Вызывается в методе addComment — это было и до исправлений :)
Интерфейс репозитория — для разных реализаций репозитория, а не разных реализаций поста. Никто не мешает наследоваться от КЛАССА внезапно!
Да, согласен.
И это по вашему правильно и удобно? В теории может все и красиво, но если мы говорим про практику, то на дальную перспективу отдельные методы куда удобнее.
Тут речь не в понимании, а в том, что на реальных (а не теоритических в учебнике) проектах, это впоследствии вызывает проблемы
А почему вы решили что фраза «беспокоятся о данных и их связях», речь про БД? Бизнес-логика — это данные. Нужно продумывать взаимодействия объектов, то как объекты будут выглядеть и функционировать. А уже ПОТОМ думать о том как они будут хранится.
Потому как если вы начнете с определения БД и уже далее будете от этого отталкиваться, то это наложит свой отпечаток на реализации. А если вы сначала реализуете логику работы, то как сущности будут между собой взаимодействовать, то может вообще увидите, что вам лучше использовать документоориентированную БД вместо реляционной.
P.S. уверен есть и маститые парни которые которые за code-first подход :)
А почему «пишу самое правильное определение» это не тождественно равно «подразумеваю под моделью»? Синонимы как по мне.
Дак а я не увидел опровержений. Модель — это все что касается бизнес-логики. У Фаулера (с ваших слов) Модель — это все что не UI. Чем мое определение хуже, чем у Фаулера?
Касаемо DDD — термина модели нет, есть Агрегат, Сущность, VO — что по факту является детализацией/конкретизацией термина «модель»
Если бы я писал про DDD, я бы изначально ввел ряд терминов для понимания о чем речь. В данной статье использовался термин Модель, с смыслом описанным вначале.
Занятное чтиво бы получилось. И наверняка нашелся бы тот (или какая-либо концепция), чье понимание я не отразил. Так что слово «модель» в рамках данной статьи, отражает именно то, что написано в статье.
Никогда бы не подумал что краткий референс на Domain Model сломает до такой степени понимание.
Причем когда мы говорим про AR, такого вопроса почему то не возникает, и по-умолчанию понятно что является моделью. Хм…
Агрегат (Aggregate) – самостоятельный объект, имеющий идентичность.
Сущность (Entity) – несамостоятельный объект, имеющий идентичность.
Значение (Value Object) – несамостоятельный объект, не имеющий идентичности.
Про эти агрегаты речь? Если да, то определим, что моя концепция не разделяет эти 3 сущности и все 3 является моделями. Собственно при ТАКОМ контексте, в чем проблема?
Выше (в другой ветке) уже писали, что в концепции MVC, модель — это все что не касается интерфейса. Поэтому по факту M включается в себя слой данных и домена, а C — представляет из себя слой приложения. И где-то рядом еще сервисный слой должен лежать.
Не нужно ограничивать себя рамками MVC и считать, что модель — это база (повторюсь, это неверно).
«Модель» != «Domain model», а «Модель» = «Domain object». Я вроде уже раза 4-5 это обозначил.
Мы вроде выяснили что я понимаю не так как Вы, а ваша аргументация почему мое понимание не ложится в концепцию DM слабо выглядит.
Определение Фаулера (краткое):
Объекты отражающие сущности бизнес-логики (о чем в статье и речь). Если вы это определение воспринимаете иначе, то это уже проблема восприятия, а не формулировок.
Я и не провозглашал, что мое мнение истина в последней инстанции. Я лишь сказал что модели — это исключительно бизнес-логика. И это мнение правильное для меня, и абсолютно не ложится в термины MVC. Я эту идею транслирую, так же как Фаулер транслирует свою. Это разные точки зрения (да и по большому счету «о разном») и как-то сравнивать 2 термина из разных концепций странное занятия (естественно у Фаулера запас доверия куда бооооооольше, но это не значит что мое мнение ничего не стоит).
Окей, разберемся в терминах. Чуть выше я привел пример объект «деньги», который по моему мнению тоже модель (без поведения, просто данные). Вы говорите что это не модель, а объект домена — все верно?
Т.е. модели — это то что отражает объекты предметной области (неважно есть поведение или нет), а объекты домена — это вспомогательные сущности без поведения предметной области?
Вы делаете Модель «тупым» хранилищем с которым проводит какие-то операции Контроллер. Таким образом вы раздуваете контроллеры и даете им слишком много ответственности. Перемешиваете слои домена, сервиса и приложения, ну и т.д. Такой проект в последствии будет проблематично расширять и поддерживать.
В данном случае я думаю стоит быть категоричным, т.к. тут нет «относительности». Большой контроллер с массой ответственности — плохо при любом раскладе.
Да, каюсь, некорректно привел информацию о модели в парадигме MVC, но речь в статье НЕ заключалась в объяснении MVC, а рассмотрение конкретного примера работы с моделями.
А в чем тут ложность? Вы сами приводите сноску о том, что модель — это объект предоставляющий информацию о домене. По вашему домен != бизнес-логика?
А что в вашей сноске подтверждает ваше утверждение? Модель и сущность — это термины означающие одно и то же: объект предметной области обладающей поведением и данными данной предметной области. Если вы имеете ввиду различные вспомогательные ValueObject и определяете их как сущности — это опять вопрос терминологии. Даже если мы возьмем такой пример VO как «деньги», то это тоже модель, но без поведения как такового.
Вообще не подтверждающая цитата. Здесь лишь говорить о том что модели могут раздуваться до огромных размеров, но это уже вопросы проектирования и реализации, а не подхода как такового. В статье идет разделение на «целое и часть» в рамках конкретной сущности бизнес-логики (например «пост — комментарий»).
То есть допустим, если у нас есть объект «Департамент», который действительно может быть большим, НО большой объект != сложный объект. Если декомпозировать эту модель на его «части» и логику реализовать с помощью бизнес-операций (пример реализации в статье), то объект будет просто большим, но ничуть не сложным.