Я в сетях:

Облако тегов


Парадигмы MVC и HMVC

Парадигмы MVC и HMVC

Вернуться на главную

by root posted 28.11.2012 2687

Раздел: Паттерны программирования Теги: теория, mvc, hmvc, опытным, практика

Данный мелкий очерк является своеобразным способом поделится наработанными размышлениями о паттернах и парадигмах.

Паттерны и парадигмы

Начну с самого большого - с парадигм. Данный термин обозначает способ мышления в определенной сфере или в мире вообще. В программном мире парадигмой в наше время является в большей степени - ООП, а именно - MVC. Как бы программисты не крутились они всегда пишут моделями, контроллерами и видами, иногда смешивая некоторые элементы. Схематично представлю классику mvc:

Некоторые называют данную схему паттерном или совокупностью паттернов, но, я думаю, что это все-таки парадигма, так как существующие паттерны часто придерживаются MVC в том или ином виде.

Правильное MVC или как тонкий управляет толстым

В правильном коддинге модель всегда должна быть "толстой", включать в себя максимум реализации, управления другими классами и данными из внешних источников (база данных, кеш, файлы и т.д.). Контроллер, в свою очередь, должен быть "худым" или "тонким", запускать модель и тянуть за ее ниточки (методы) реализуя необходимый функционал сайта, приложения. На счет видов нет однозначного мнения где их собирать. Я лично предпочитаю собирать и запускать виды непосредственно в модели, другие - в контроллерах. Тут дело вкуса. Представлю для примера часть одного из своих контроллеров:

class main extends Controller{

    protected $model;

    public function __construct( $core ) {
        parent::__construct( $core );
        $this->model = new mainModel();
    }

    protected function index( $page, $rubric, $tag ) {
        $this->model->index( $page, $rubric, $tag );
    }

    protected function post( $id ) {
        $this->model->post( $id );
    }
...

HMVC

В заключении поста поговорим об еще одной вариации MVC (некоторые даже называют ступенью эволюции) - HMVC.

Как видно по схеме hmvc представляет из себя дерево из mvc, тем самым позволяя быстро отсечь одну из "веток" и спокойно "приживить" на другое "дерево".

На сегодня всё... Спасибо за внимание.

comments powered by Disqus