Паттерн Фасад

Паттерн Фасад

Паттерн Фасад — структурный шаблон проектирования, позволяющий скрыть сложность системы путем сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы. Несмотря на мудреное определение, наверное, самый простой шаблон проектирования и очень скоро вы в этом сами сможете убедиться. Реализация: давайте попробуем разработать навигационную систему автомобиля. Перед поездкой водитель будет включать GPS, загружать данные о пробках, прокладывать путь и выключать после поездки. За каждое описанное действие будет отвечать отдельный класс, кроме включения и выключения. И так, класс

Читать далее

Паттерн Адаптер

Паттерн Адаптер

Паттерн Адаптер – структурный шаблон проектирования, предназначенный для организации использования функций объекта, недоступного для модификации, через специально созданный интерфейс. Паттерн адаптер предусматривает создание класса-оболочки с требуемым интерфейсом. Является, наверное, одним из самых часто употребляемых шаблонов проектирования, который можно встретить практически в любой программе, причем применяется программистами зачастую неосознанно и позволяет эффективно устранять проблему дублирования кода в определенных ситуациях. Одну из таких ситуаций мы рассмотрим далее. Реализация: предположим, что мы работаем на заводе по производству машин в Германии и у нас

Читать далее

Паттерн Команда

Паттерн "Команда"

Паттерн Команда – поведенческий шаблон проектирования, инкапсулирует запрос в виде объекта, делая возможной организацию клиентских объектов с другими запросами, организацию очереди или регистрацию запросов, а также, поддержку отмены операций. В объектно-ориентированном программировании шаблон проектирования Команда используется для инкапсуляции всей информации, необходимой для выполнения действия или вызова события в более позднее время. Эта информация включает в себя имя метода, объект, который является владельцем метода и значения параметров метода. Реализация: на этот раз попробуем реализовать запуск двигателя автомобиля с пульта, а потом

Читать далее

Паттерн Одиночка

Паттерн "Одиночка"

Паттерн Одиночка – порождающий паттерн проектирования, гарантирующий, что в однопоточном приложении будет единственный экземпляр класса с глобальной точкой доступа. Реализация: паттерн чрезвычайно прост, попробуем с его помощью создать машину для президента, которая будет существовать в единственном экземпляре. Создание приватного конструктора в классе будет неплохим первым шагом в достижении нашей цели, это позволит избежать создание одиночки другими классами, вторым шагом будет создание метода получения экземпляра класса. Если с конструктором все понятно, то с методом, который возвращает экземпляр нашего «одиночки», все несколько

Читать далее

Паттерн Абстрактная фабрика

Абстрактная фабрика

Паттерн Абстрактная фабрика – предоставляет интерфейс создания семейств взаимосвязанных или взаимозависимых объектов без указания их конкретных классов. Шаблон реализуется созданием абстрактного класса, который представляет собой интерфейс для создания компонентов системы (например, для оконного интерфейса он может создавать окна и кнопки), затем пишутся классы реализующие этот интерфейс. Применяется в случаях: когда программа должна быть независимой от процесса и типов создаваемых новых объектов; когда необходимо создать семейства или группы взаимосвязанных объектов исключая возможность одновременного использования объектов из разных этих наборов в одном

Читать далее

Паттерн Фабричный метод

Паттерн Фабричный метод (он же виртуальный конструктор) – порождающий шаблон проектирования, предоставляющий подклассам интерфейс для создания экземпляров некоторого класса. Таким образом фабричный метод делегирует операцию создания экземпляра подклассам. Это позволяет использовать в коде программы не специфические классы, а манипулировать абстрактными объектами на более высоком уровне. Реализация: Мы с вами на протяжении трех статей о шаблонах проектирования неплохо справляемся с разработкой различных программ для автопроизводителей, не будем нарушать традицию. На этот раз давайте попробуем создать линии сборки машин различной комплектации с

Читать далее

Паттерн Декоратор

Паттерн Декоратор – шаблон проектирования, предназначенный для динамического подключения к объекту дополнительного поведения. Паттерн Декоратор представляет гибкую альтернативу практике создания подклассов с целью расширения функциональности. Реализация: после применения последних двух паттернов давайте продолжим работать на автоконцерн и попробуем написать программу для расчета стоимости автомобиля на основании его комплектации. Ранее при рассмотрении шаблонов проектирования, как вы могли заметить, мы старались избегать механизма наследования отдавая предпочтение композиции. Сегодня мы нарушим нашу традицию и для этого есть серьезные причины. Начнем работу с создания

Читать далее

Паттерн Наблюдатель

Паттерн Наблюдатель – поведенческий шаблон проектирования, определяет отношение «один ко многим» между субъектами таким образом, что при изменении состояния одного объекта происходит автоматическое оповещение и обновление всех зависимых компонентов. Реализация: совет директоров нашего автогиганта в восторге от программы, которую мы написали при рассмотрении паттерна Стратегия и в качестве награды переводят в нас отдел передовых разработок, где мы будем разрабатывать программу для приборной панели нового поколения! На приборной панели будут отображаться три показателя: скорость, обороты двигателя и давление масла. Вся информация

Читать далее

Паттерн Стратегия

Паттерн Стратегия – один из самых простых поведенческих шаблонов проектирования, предназначенный для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет модифицировать алгоритмы независимо от их использования на стороне клиента. Реализация: допустим, нам необходимо написать программу для только что открывшегося автозавода. Заказчик пока собирается выпускать только одну модель машин и необходима программа, для хранения характеристик этой модели. Пусть это будет переднеприводный седан. Создадим два класса один абстрактный – Car с одним методом — void drive(), второй

Читать далее

Site Footer