0

Собственно, встал вопрос, сколько абстракций в архитектуре mvc и почему так?

Обновление

Модель уровень абстракции для взаимодействия с бд не зависящая от контроллера. Контроллер абстракция, где происходит роутинг и мелкие проверки. Вьюха абстракция - вообще клиентская часть приложения, которая занимается отображением полученных данных.

Обновление 2

Уровень абстракции — один из способов сокрытия деталей реализации определенного набора функциональных возможностей. Применяется для управления сложностью проектируемой системы при декомпозиции, когда система представляется в виде иерархии уровней абстракции. Модель скрывает общение с базой от контроллера, контроллер скрывает работу с моделями (читай обработку данных в зависимости от роута). Вьюха скрывает от пользователя собственно запросы к серверу. Я считаю, что curl, запрашивающий сервер с index.php в котором echo exec("mysql .. $sql"); это один уровень абстракций в контексте web приложения

Хорошо, если меня поддерживают на счет абстракций. Что тогда являются компонентами одного уровня абстракции?

UPD
Разгорелся спор о том, что это компоненты одного уровня абстракции. В Интернете про уровни абстракции ни слова. Как думаете Вы и почему?

3
  • @GrKoV, Постарайтесь писать более развернутые вопросы. Поясните, в чем вы видите проблему, как ее воспроизвести и т. д.
    – DreamChild
    24 окт 2014 в 11:38
  • 1
    Три, потому что M, V и С.
    – KoVadim
    24 окт 2014 в 11:38
  • @GrKoV спасибо за ликбез, но я знаю, что такое MVC. Я имел в виду, почему вы считаете это именно уровнями абстракции? И при чем здесь собственно абстракции? О каких абстракциях идет речь в случае с MVC?
    – DreamChild
    24 окт 2014 в 11:52

2 ответа 2

1

Ну логично, что три основные (Model-View-Controller), которые везде описаны.


На практике каждая абстракция может разбиваться и дополняться, но не противореча общей картине шаблона. Вполне может быть, что в модели у вас отдельно лежат интерфейсы и реализации, структуры, ORM. В представление дополнительно вводятся хелперы. В контроллере появляются настройки и предустановки. Но базовых компонентов (а именно так абстракции называются в рамках обсуждения MVC) в данной концепции три.

Обновление

@Bastian, если ORM для вас черный ящик, к которому Вы обращаетесь для реализации других компонентов, то вполне возможно его определить как абстракцию в абстракции. Появляются многоуровневые абстракции. Базовых три, однако вы можете взять одну из них и разделить ее содержимое на еще несколько так, чтобы они были согласованы с разделяемой. Получается что-то вроде дерева с иерархией уровней.

4
  • @Alex Krass >Вполне может быть, что в модели у вас отдельно лежат интерфейсы и реализации, структуры, ORM. Этим предложением вы хотите сказать что ORM может быть одним из уровней абстракции модели?
    – Bastiane
    24 окт 2014 в 12:07
  • @Bastian, как раз я предполагаю, что orm это компонент абстракции уровня общения с базой, т.е того же уровня, что и model.
    – GrKoV
    24 окт 2014 в 12:09
  • Обновил ответ
    – Alex Krass
    24 окт 2014 в 12:21
  • @Alex Krass ну если исходить из подобного, то этих уровней абстракций может быть бесконечное множество. Это может означать лишь то, что холивар на данную тему бесконечен. :)
    – Bastiane
    24 окт 2014 в 12:25
1

Разгорелся спор о том, что это компоненты одного уровня абстракции. В интернете про уровни абстракции ни слова. Как думаете Вы и почему?

хорошо, а что вы считаете уровнями абстракции применительно к MVC? На мой взгляд вряд ли будет правильно относить модель, представление и контроллер к уровням абстракции

Обновление

Я имел в виду, почему вы считаете это именно уровнями абстракции? И при чем здесь собственно абстракции? О каких абстракциях идет речь в случае с MVC?

Обновление 2

@GrKoV этот вопрос скорее философского плана, на который вряд ли можно ответить однозначно. Смысл в ваших рассуждениях определенно есть (я бы лишь отметил, что модель - это далеко не всегда работа с базой данных. Нередко вообще бывает так, что работу с БД выносят из модели в отдельные слои, котрые тоже можно отнести к уровням абстракции), и я, пожалуй, склонен согласиться с вами. Однако судить о curl, echo и прочих php-особенностях не берусь, поскольку не работаю с этим языком

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.