Паттерн «Декоратор» (с примерами на C#, Java и PHP)

Паттерн «Декоратор» (Decorator) предназначен для добавления объекту нового функционала без порождения производных классов. «Декоратор» имеет то же альтернативное англоязычное название, что и «Адаптер» — «Wrapper» (Обёртка). Но, между этими паттернами есть принципиальное отличие.

Продолжить чтение

Паттерн «Сценарий транзакции» при загрузке файлов в Spring MVC

Ранее мы рассматривали загрузку файлов в web приложении на основе Spring MVC с использованием форм. Но, на механизме загрузки процесс на самом деле не заканчивается. Необходимо обеспечить корректность его работы. Чтобы было соответствие между файлами и хранящимися на сервере и записями в базе данных, которые содержат информацию о них.

Продолжить чтение

Паттерн «Команда» в WPF. «Строгий» вариант реализации паттерна MVVM

В первой статье, посвящённой паттерну MVVM, мы рассматривали так называемый «нестрогий» вариант его реализации, когда взаимодействие представления и модели представления осуществляется посредством обработки событий. Также в этой статье было отмечено, что, если строго следовать паттерну необходимо использовать механизм команд. Теперь мы рассмотрим применение паттерна команда в контексте WPF и усовершенствуем

Продолжить чтение

Паттерн «Команда» (Command). Описание и примеры использования

Команда (Command) – один из «классических» поведенческих паттернов, описанных ещё у «Банды Четырёх» [1]. Он используется для создания гибкого механизма действий над чем-либо или команд. В этом механизме класс отправитель команды и класс получатель не зависят друг от друга. В данном паттерне объект «Команды» инкапсулирует как само действие, так и

Продолжить чтение

Реализация паттерна MVVM на примере C# (WPF). «Нестрогий» вариант

Model-View-ViewModel (MVVM) – архитектурный паттерн, ориентированный главным образом на платформы, поддерживающие связывание данных и элементов пользовательского интерфейса (например, WPF). MVVM сравнительно «молодой» паттерн (впервые представлен Джоном Госсманом в 2005 году [1]).

Продолжить чтение

Использование паттернов «Отложенная инициализация (загрузка)» (Lazy initialization (load)) и «Заместитель» (Proxy) при отображении видео на сайте

Отображением на сайте видео с различных видеохостингов (того же YouTube) сегодня уже никого не удивить. Однако, если на странице находится не одно видео, а несколько возникает не совсем приятная ситуация.

Продолжить чтение

Паттерн «Мост» (Bridge) Описание и пример реализации

Паттерн «Мост» предназначен для оптимизации сложных структур объектов. Его смысл в том, чтобы разделить абстракцию и реализацию таким образом, чтобы они могли изменяться независимо друг от друга. Это даёт весьма положительный эффект, когда абстракция и реализация должны расширяться новыми подклассами или меняется не только сам объект, но и функции, которые

Продолжить чтение

Поддержка работы с несколькими конфигурациями 1С при помощи паттерна «Стратегия» на примере C#

Интеграция программного обеспечения с 1С не всегда ограничивается работой только с одной информационной базой. Нередко возникает необходимость реализовать поддержку нескольких конфигураций или даже различных версий одной и той же конфигурации. Если при работе хотя бы с двумя конфигурациями выполняются действия схожие между собой по содержанию, целесообразно прибегнуть к паттерну «Стратегия».

Продолжить чтение

Паттерн «Заместитель» («Proxy»). Описание и использование (на примере Delphi)

Если программа включает в себя достаточно «тяжёлые» объекты, которые потребляют достаточно много ресурсов, наиболее оптимальное решение – создавать такие объекты «по запросу». То есть тогда, когда они на самом деле необходимы. Для решения этой задачи и предназначен паттерн «Заместитель».

Продолжить чтение