Рубрика «паттерны проектирования» - 5

Каждый программист, наверняка, сталкивался с ситуацией, когда в приложении имеется набор классов (возможно, сервисных), которые используются во многих участках программы. И вроде бы всё ничего, но как только появлялась необходимость менять эти классы, это могло негативно влиять и на вызывающий код. Да, как и указано в заголовке, речь в статье пойдет о том самом паттерне «Low Coupling».

Variadic Templates, Low Coupling и немного размышлений

Проблема не нова и давно известна. Путей ее решения может быть несколько, все зависит от предметной области. Я предлагаю читателю возможное решение, которое я нашел, занимаясь прикладной задачей. Как идеалиста, найденное решение меня устроило не полностью. Так же, оно было спроектировано в бОльшей степени от желания воспользоваться новыми возможностями стандарта C++11. Естественно, все написанное подлежит обсуждению, а возможно, кто-то предложит более стройный вариант.
Читать полностью »

Генная модификация
Существуют паттерны натуральные, прошедшие долгий путь эволюционного развития, а есть и другие, вроде бы и такие же, но модифицированные, улучшенные — местами до неузнаваемости. Впрочем, название и внешняя схожесть чаще остаются. А вот дальше начинается магия. Уж не знаю, то ли это я такой везучий, то ли жизнь не так проста, как хочется думать, но встречаются мне постоянно вот эти — модифицированные паттерны. В данной статье будет рассмотрено несколько таких примеров и сделана попытка восстановить образ мышления героя-экспериментатора, породившего на свет новые организмы, так старательно маскируемые под всем знакомые. Вопрос «почему так?» пока останется без ответа.
Читать полностью »

Введение

В этой статье будут представлены примеры того, как реализуются классические паттерны проектирования на Scala.

Содержание статьи составляет основу моего выступления на JavaDay конференции (слайды презентации).

Читать полностью »

Изучая планы развития CMS Joomla, для написания одной из своих предыдущих статей, я наткнулся на аббревиатуру HMVC. Не сложно было понять, что это как-то связано со ставшим стандартом паттерном MVC. Найденная расшифровка: «HMVC — иерархические модель-вид-контроллер» — мало что объяснила. Дальнейшие поиски информации тоже дали не много, в основном теоретические рассуждения о паттерне и почти ничего о том, как же его использовать на практике. Однако немного поразмыслив, я понял, что уже использовал его в своем предыдущем проекте на Symfony 2. Более того, оказывается, что частично этот паттерн используют очень многие даже не догадываясь об этом.
Читать полностью »

Доброго времени суток!
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, и даже для веб-разработки.
Читать полностью »

Введение

В мире функционального программирования есть один большой пробел, а именно почти не освещена тема высокоуровневого дизайна больших приложений. Я решил для себя изучить этот вопрос. Есть ли существенные отличия дизайна приложений в ФП-мире от оного в мире императивном? Что такое «каноничный ФП-код»? Какие существуют идиомы разработки, есть ли смысл вообще говорить о паттернах проектирования в применении к ФП? Эти и другие важные вопросы часто вспыхивают то там, то здесь, но покамест мне не известно ни одной книги, аналогичной книге Банды Четырех. Вероятно, мои изыскания уже кто-то повторил, однако тем лучше: схожие результаты подтвердят правильность, иные — укажут на место в теории, которое необходимо доработать.
Читать полностью »

В паттерне, объект создается в конструкторе, а его методы объявляются в прототипе.

Данный паттерн используется во фреймворках, таких как Google Closure Library. Нативные объекты JavaScript также используют данный паттернт.

Объявление Pseudo-class

Термит Pseudo-class выбран потому, что в JavaScript нет как таковых классов, как в других языка как C, Java, PHP и др., но данный паттерн близок к определению класса.Читать полностью »

Шпаргалка по шаблонам проектирования
Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

Читать полностью »

Легко понять популярность языка C++ среди профессиональных разработчиков игр. Этот язык недалеко ушел от переносимости и эффективности языка C, но при этом предлагает определённые конструктивные преимущества объектно-ориентированного языка. Хоть язык и обладает такой мощью, для эффективной работы потребуется правильный подход и хорошая реализация кода. Несмотря на парадигму объектно-ориентированного программирования (ООП), программы, написанные на С++, могут работать несколько хуже, чем написанные на языке С.

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

В предыдущей статье мы рассмотрели маленький паттерн для упрощения кода пользователей сервисов, в этой статье мы рассмотрим особый вид сервиса. Данный паттерн применяется в архитектурах имеющих слои, если рассматриваемая архитектура не имеет слоев, то паттерн может не иметь нужного эффекта либо быть вообще вредным.

Архитектурные слои

К сожалению на хабре нет статей описывающих что такое слои, но снаружи есть статья читателя primepix

Паттерн не привязан к языкам программирования.

Картинка для привлечения внимания:

Паттерн «VIP сервис»

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js