English version

RSS

Паттерны проектирования

Автор: Михаил Новиков
Источник: RSDN Magazine #3-2005
Аннотация: Структурный паттерн Decorator используется в случаях, когда необходимо без применения механизма наследования расширить функциональность класса или же изменить ее. Другими словами появляется альтернатива наследованию, причем классы не закреплены жестко в иерархии. Паттерн действует на уровне объектов, и сам процесс наращивания функциональности происходит во время выполнения, что позволяет динамически менять степень вложенности и выбирать сами декораторы. Второе имя паттерна Decorator это Wrapper, то есть обертка. Это название раскрывает устройство этого шаблона.

Ключевые слова: Decorator
Автор: Михаил Чащин
Источник: RSDN Magazine #5-2003
Аннотация: Что такое framework? Кто их пишет и кто использует? Что нужно знать и уметь, чтобы написать framework? В данной статье вы найдёте ответы на эти и другие вопросы. Рассматриваются также особенности проектирования и реализации framework на примере графической системы.

Ключевые слова: Framework
Автор: Юрий Королев
Источник: RSDN Magazine #1-2008
Аннотация: В этой статье предлагается реализация шаблона «Фабричный метод с параметрами (Parameterized Factory Method)» – частный случай реализации фабричного метода средствами языка С# 2.0. Реализация основана на дополнительном классе KeyedFactory, в который сведена вся логика выбора фабричного метода. KeyedFactory дополняется полезными методами, которые позволяют фабрике поддерживать большинство методов создания объектов в среде Microsoft .Net. Кроме того, в статье приводятся результаты тестирования скорости различных методов создания объектов.

Ключевые слова:
Автор: Иван Бодягин
Источник: RSDN Magazine #2-2006
Аннотация: В наше время сложно найти разработчика, который не слышал бы о паттерне под названием Model-View-Controller или сокращенно MVC, что вообщем не удивительно, с задачей отделения данных от их представления сталкиваешься практически на каждом проекте. Однако, как ни странно, столь же сложно найти разработчика, который действительно четко себе представляет, что такое на самом деле паттерн MVC и как его можно реализовать в конкретной ситуации. Основная причина такой неоднозначности в том, что по историческим причинам данной аббревиатурой принято называть не один единственный паттерн, а целое семейство паттернов, призванное отделять представление от модели. Произошло это в силу разных обстоятельств. Отчасти из-за того что MVC не просто паттерн, а довольно объемное архитектурное решение, в котором каждый новый разработчик видел что-то свое и ставя во главу угла особенности своего проекта, реализовывал его по своему. Отчасти же из-за возраста данного паттерна, во времена его изобретения и сами приложения, и графические интерфейсы были существенно беднее чем в наше время, с тех пор они сильно эволюционировали и вместе с ними изменялся и сам паттерн. Данная статья посвящена также одному из паттернов входящих в это семейство, причинам его появления, особенностям применения, преимуществам и недостаткам, а так же описанию сопутствующих паттернов.

Ключевые слова: MVC
Автор: Дмитрий Федоров
Аннотация: При разработке больших проектов, часто возникает необходимость обращаться из одного модуля программы к объектам, существующим в другом модуле. Такие объекты, как правило, существуют в единичных экземплярах, поэтому наиболее распространенной практикой является создание глобальных объектов данного тип...

Ключевые слова:
Автор: Андрей Глизнецов
Источник: RSDN Magazine #4-2004
Аннотация: В этой статье разбирается применение паттерна “Команда” в приложении WinForms. C помощью этого паттерна можно выделить обработку действий пользователя, ассоциируемых с пунктами меню, в отдельные объекты. Это позволяет отделить код пользовательского интерфейса от основной функциональности приложения, и, соответственно, сделать код приложения более структурированным и облегчить его поддержку.

Ключевые слова: Command, Pattern Command
Автор: Сергей Гурин
Источник: RSDN Magazine #5-2004
Аннотация: В статье описывается расширение паттерна Command, которое позволяет командам выполняться в различных контекстах и пересекать границы приложения и компьютера.

Ключевые слова: pattern command
Автор: Андрей Корявченко
Источник: RSDN Magazine #3-2006
Аннотация: Очень часто в программах встречаются сложные структуры, представляющие собой дерево или граф, состоящий из разнотипных узлов. И, конечно же, при этом имеется необходимость обрабатывать этот граф. Самое очевидное решение - добавить в базовый класс виртуальный метод, который перекрыть в наследниках для выполнения нужного действия и осуществления дальнейшей навигации по дереву. Однако у этого приема есть серьезный недостаток: в нем структура данных оказывается увязанной с обрабатывающими ее алгоритмами. Если нам понадобится алгоритм, отличный от реализованного, то придется добавлять еще один виртуальный метод. Еще хуже, если классы, составляющие дерево, содержатся в недоступном для модификации коде. Одним из вариантов решения проблемы высокой связности в данном случае является паттерн Посетитель.

Ключевые слова: Visitor
Автор: Михаил Новиков
Источник: RSDN Magazine #4-2005
Аннотация: В случаях ветвления алгоритма или выполнения различных действий в зависимости от состояния применяются операторы if…else, switch…case..default и подобные им. Последовательности таких конструкций усложняют поддержку кода и отрицательно влияют на масштабируемость приложения. При необходимости добавить новые возможности требуется добавить еще один условный оператор, причем иногда в нескольких местах, что приводит к ошибкам. Решить данную проблему позволяют сразу несколько паттернов, среди которых выделяется Состояние.

Ключевые слова: State pattern, IUI
Автор: Михаил Новиков
Источник: RSDN Magazine #4-2005
Аннотация: Паттерн Abstract Factory предоставляет интерфейс для создания семейств связанных или зависимых объектов (далее - продукты), позволяя не указывать их конкретные классы.

Ключевые слова: AbstractFactory
Авторы: Беркович Вадим
Чудин Андрей
Источник: RSDN Magazine #3
Аннотация: Практически во всех проектах можно встретить те или иные паттерны проектирования. Но далеко не часто они обозначены разработчиками. Проект, в котором явно обозначены все использованные паттерны, удобнее для понимания и более управляем. Можно сказать, что описание проекта в терминах паттернов добавляет новые метаданные о проекте. Если мы считаем, что данный класс реализует паттерн "итератор", мы сразу получаем представление об его интерфейсе и роли. Если же изначально весь проект реализован с использованием паттернов, то управление проектом упрощается. Обобщение удачных решений конкретных задач в паттерны и использование их в последующих проектах существенно ускоряет процесс разработки. А код становится более понятным и элегантным, и им можно будет воспользоваться повторно.

Ключевые слова: pattern
Автор: Джимми Нильссон
Источник: Применение DDD и шаблонов проектирования
Материал предоставил: Издательство ''Вильямс''
Аннотация: Глава из книги "Применение DDD и шаблонов проектирования: проблемно-ориентированное проектирование приложений с примерами на C# и .NET". [q] Мне уже не раз приходилось слышать, что шаблоны — теоретическая чепуха и элитарная выдумка, не приносящая никакой пользы. Эта глава опровергает такое мнение, поскольку оно очень далеко от истины. Шаблоны могут быть очень практичными, полезными для повседневной работы и чрезвычайно интересными для разработчиков. Возможно, вы обратили внимание на то, что я уже упоминал в предыдущейглаве некоторые шаблоны. К ним, в частности, относится шаблон модели предметнойобласти [Fowler PoEAA]. В этой главе рассмотрены три разные категории шаблонов: шаблоны проектирования (как обобщенные, так и прикладные), архитектурные шаблоны и шаблоны предметной области. [/q] Материал предоставлен издательством Вильямс.

Ключевые слова: DDD, pattern
Автор: Джошуа Кериевски
Источник: Рефакторинг с использованием шаблонов
Материал предоставил: Издательство Вильямс
Аннотация: Глава из книги "Рефакторинг с использованием шаблонов". Наиболее распространенные проблемы проектов возникают в следующих случаях: - если код содержит повторы; - если он непонятен; - если он сложен. Эти критерии определенно могут помочь обнаружить в коде места, нуждающиеся в улучшении. С другой стороны, многие программисты считают этот список слишком неопределенным: не понятно, как опознать в коде повторения, если они не совсем одинаковы; невозможно с полной уверенностью судить, ясно ли говорит код о своем назначении, не понятно, как отличить простой код от сложного.

Ключевые слова: рефакторинг, паттерны, шаблоны проектирования
Автор: Бучельников Игорь Владимирович
Аннотация: Почему происходит уменьшение связанности при использовании Inversion of Control? Какова область применения Inversion of Control? Бывают ли случаи когда без Inversion of Control не обойтись? Является ли событийная модель синонимом принципа Inversion of Control? Чем отличается библиотека (library) от каркаса (framework)? Можно ли следовать принципу Inversion of Control и при этом не использовать Factory Method, Inversion of Control Container и Dependency Injection?

Ключевые слова: Inversion of Control; Inversion of Control Container; Dependency Injection; Factory Method; Design patterns
Автор: Тепляков Сергей Владимирович
Источник: RSDN Magazine #2-2010
Аннотация: В статье рассматривается история шаблонов проектирования, от момента их зарождения в конце 1980-х годов, до сегодняшних дней.

Ключевые слова: Шаблоны проектирования; история; ООП
Автор: Владислав Чистяков
Источник: RSDN Magazine #5-2004
Аннотация: В рассказывается, что такое мета-программирование, зачем оно нужно, а так же рассказывается о проекте R# открывающего мир мета-программирования для пользователей .NET и C#.

Ключевые слова: R#

Обобщенный Model-View-Controller

Автор: Сергей Рогачев
Аннотация: В статье рассматривается вариант реализации шаблона проектирования Model-View-Controller в виде каркаса приложения на основе обобщенного программирования языков Java и C#. В описании предлагаемого решения, кроме того, будут рассмотрены шаблоны проектирования Mediator, Observer и Command и показаны варианты их применения в рассматриваемой реализации Model-View-Controller. Предполагается наличие у читателя знания базовых шаблонов проектирования, языка UML, диаграммами которого будут сопровождаться описания, а также одного из указанных языков программирования.

Ключевые слова: generic,mvc,java,.net,c#,mediator,observer,command,swt,windows forms,asp.net
Автор: Сергей Рогачев
Источник: RSDN Magazine #4-2008
Аннотация: Статья продолжает одноименный материал, опубликованный ранее, рассмотрением ошибок, допущенных в реализации обобщенного Model-View-Controller. Вместе с тем работа рассматривает общие проблемы и решения в области безопасного программирования, в частности: потоковую безопасность, ликвидацию утечки памяти, безопасность инициализации и защитное программирование на основе контрактных спецификаций – поэтому предполагается, что статья будет интересна всем, кто заинтересован в повышении качества своих приложений. В описании приводятся реализации шаблонов проектирования Observer, Command, Model-View-Presenter. Примеры построены на модульном тестировании и используют аспектно-ориентированное программирование. Предполагается наличие у читателя знания языка программирования Java 5 и модульного тестирования на основе платформы JUnit.

Ключевые слова: generic,mvc,java,junit,tdd,thread safety,memory leaks,weak reference,safe construction,concurrent,atomic,cas,observer,mvp,command,aop,aspectj,dbc,annotation,oval