Изучая планы развития CMS Joomla, для написания одной из своих предыдущих статей, я наткнулся на аббревиатуру HMVC. Не сложно было понять, что это как-то связано со ставшим стандартом паттерном MVC. Найденная расшифровка: «HMVC — иерархические модель-вид-контроллер» — мало что объяснила. Дальнейшие поиски информации тоже дали не много, в основном теоретические рассуждения о паттерне и почти ничего о том, как же его использовать на практике. Однако немного поразмыслив, я понял, что уже использовал его в своем предыдущем проекте на Symfony 2. Более того, оказывается, что частично этот паттерн используют очень многие даже не догадываясь об этом.
Читать полностью »
Метка «паттерны проектирования»
Паттерн HMVC в веб-разработке
2014-02-10 в 9:51, admin, рубрики: hmvc, mvc, web-разработка, Веб-разработка, паттерны, паттерны проектирования, Проектирование и рефакторинг, метки: hmvc, mvc, web программирование, web-разработка, паттерны, паттерны проектированияОсобенности реализации MVP для Windows Forms
2014-02-10 в 7:56, admin, рубрики: .net, mvp, pattern, windows forms, WinForms, ооп, паттерны проектирования, метки: mvp, pattern, windows forms, WinForms, паттерны проектирования Доброго времени суток!
Model-View-Presenter — довольно известный шаблон проектирования. С первого взгляда все выглядит просто: есть Модель (Model), которая содержит всю бизнес-логику экрана; Вид/Представление (View), который знает, как отобразить те или иные данные; Представитель (Presenter), который является связующий звеном — реагирует на действия пользователя во View, изменяя Model, и наоборот.
Сложность начинается, когда количество форм в проекте становится более одной.
В данной статье рассматривается:
— немножко теории;
— общие проблемы реализации MVP (а именно Passive View) под Windows Forms;
— особенности реализации переходов между формами и передача параметров, модальные окна;
— использование IoC-контейнера и шаблона Dependency Injection — DI (а именно Сonstructor Injection);
— некоторые особенности тестирования MVP приложения (с использованием NUnit и NSubstitute);
— все это будет происходить на примере мини-проекта и постарается быть наглядным.
В статье затрагивается:
— применение шаблона Адаптер (Adapter);
— простенькая реализация шаблона Контроллер приложения (Application Controller).
Для кого эта статья?
Главным образом для начинающих разработчиков на Windows Forms, которые слышали, но не пробовали, или пробовали, но не получилось. Хотя уверен, что некоторые приемы применимы и для WPF, и даже для веб-разработки.
Читать полностью »
Дизайн и архитектура в ФП. Введение и Часть 1
2014-02-10 в 2:58, admin, рубрики: haskell, UML, архитектура приложений, паттерны проектирования, Проектирование и рефакторинг, функциональное программирование, метки: UML, архитектура приложений, паттерны проектированияВведение
В мире функционального программирования есть один большой пробел, а именно почти не освещена тема высокоуровневого дизайна больших приложений. Я решил для себя изучить этот вопрос. Есть ли существенные отличия дизайна приложений в ФП-мире от оного в мире императивном? Что такое «каноничный ФП-код»? Какие существуют идиомы разработки, есть ли смысл вообще говорить о паттернах проектирования в применении к ФП? Эти и другие важные вопросы часто вспыхивают то там, то здесь, но покамест мне не известно ни одной книги, аналогичной книге Банды Четырех. Вероятно, мои изыскания уже кто-то повторил, однако тем лучше: схожие результаты подтвердят правильность, иные — укажут на место в теории, которое необходимо доработать.
Читать полностью »
Шпаргалка по шаблонам проектирования
2014-01-25 в 17:07, admin, рубрики: GoF, Анализ и проектирование систем, архитектура, паттерны, паттерны проектирования, проектирование, Проектирование и рефакторинг, разработка, шаблоны, шаблоны проектирования, метки: GoF, архитектура, паттерны, паттерны проектирования, проектирование, шаблоны, шаблоны проектирования
Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.
Под катом — много картинок.
Паттерн «VIP сервис»
2013-12-10 в 15:00, admin, рубрики: паттерны проектирования, Проектирование и рефакторинг, Совершенный код, метки: паттерны проектированияВ предыдущей статье мы рассмотрели маленький паттерн для упрощения кода пользователей сервисов, в этой статье мы рассмотрим особый вид сервиса. Данный паттерн применяется в архитектурах имеющих слои, если рассматриваемая архитектура не имеет слоев, то паттерн может не иметь нужного эффекта либо быть вообще вредным.
Паттерн не привязан к языкам программирования.
Картинка для привлечения внимания:
Объектный пул и быстрое создание объектов в куче
2013-12-09 в 17:55, admin, рубрики: c++, stl, велосипеды, ооп, паттерны проектирования, С++, с++11, метки: stl, велосипеды, паттерны проектирования, С++, с++11 Хочу поделится очередным велосипедом собственной сборки на С++. Велосипед умеет быстро создавать и выдавать объекты. В результате получаем скорость создания (не отдачи) объектов на 30% быстрее чем просто с new. Объектный пул — вещь не новая, и в общем — чего о нем и говорить то. Но как говорится — главное в деталях.
Читать полностью »
Паттерн «VIP слушатель»
2013-11-12 в 19:31, admin, рубрики: паттерны проектирования, Проектирование и рефакторинг, метки: c++, паттерны проектирования Признаюсь честно, описание этого паттерна мне не встречалось, соответственно его название я выдумал. Если у кого есть информация о правильном названии, буду очень рад услышать. Паттерн не привязан к языку но в данной статье я буду использовать C#
.
Картинка для привлечения внимания:
.NET и паттерны проектирования
2013-09-02 в 20:00, admin, рубрики: .net, паттерны проектирования, шаблоны проектирования, метки: .net, c++, паттерны проектирования, шаблоны проектированияШаблон проектирования или паттерн — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
Кажется, это определение мы слышали тысячу раз… Помимо знания терминов и паттернов интересно знать, как они применяются в реальных проектах.
В статье я рассмотрю несколько наиболее популярных паттернов используемых в .NET. Некоторые из них глубоко интегрированы в инфраструктуру .NET, в то время как другие просто применяются при проектировании базовых классов в BCL.
Паттернам проектирования посвящен не один десяток книг, но одна книга стоит особняком и это знаменитая книга «Банды четырех». Поэтому для большего понимания ситуации я буду приводить небольшое описание из этой книги.
Читать полностью »
Паттерны проектирования без ООП
2013-06-21 в 10:15, admin, рубрики: python, паттерны проектирования, функциональное программирование, метки: python, паттерны проектирования, функциональное программированиеВо времена, когда я писал на Лиспе и совсем не был знаком с ООП, я пытался найти паттерны проектирования, которые мог бы применить у себя в коде. И всё время натыкался на какие-то жуткие схемы классов. В итоге сделал вывод, что эти паттерны в функциональном программировании не применимы.
Теперь я пишу на Питоне и с ООП знаком. И паттерны мне теперь намного понятней. Но меня по-прежнему воротит от развесистых схем классов. Многие паттерны прекрасно работают в функциональной парадигме. Опишу несколько примеров.Читать полностью »
Шаблон проектирования «Спецификация»
2013-03-04 в 13:11, admin, рубрики: .net, DDD, Анализ и проектирование систем, паттерны проектирования, Проектирование и рефакторинг, спецификация, метки: DDD, паттерны проектирования, спецификацияПредпринимая попытки постичь DDD вы наверняка натолкнетесь на этот паттерн, который часто тесно используется вместе с другим, не менее интересным, паттерном «Репозиторий». Этот паттерн предоставляет возможность описывать требования к бизнес-объектам, и затем использовать их (и их композиции) для фильтрации не дублируя запросы.
Пример
Давайте для примера спроектируем домен для простого группового чата: у нас будут три сущности: Группа и Пользователь, между которыми связь многие-ко-многим (один пользователь может находиться в разных группах, в группе может быть несколько пользователей) и Message представляющий собой сообщение, которое пользователь может написать в какой-либо группе:
Читать полностью »