79428

Процессы проектирования. Шаблоны программной архитектуры

Доклад

Информатика, кибернетика и программирование

Как применять политику ценообразования Вырабатывается стратегия приоритета скидок объект Продажа не должен обладать информацией о применяемых скидках но можно было бы применить стратегию расчета скидок. Имеются классы проектирования Продажа ТоварПродажа продажа отдельного вида товара в рамках продажи в целом ТоварСпецификация описание конкретного вида товара. Объект Продажа должен передать сообщение Рассчитать промежуточную сумму каждому экземпляру класса ТоварПродажа которые в свою очередь передают сообщения СообщитьЦену объектам...

Русский

2015-02-13

112.61 KB

1 чел.

  1.  

Процессы проектирования. Шаблоны программной архитектуры.

(синглтоны, фабрики, etc.)

(подробнее о шаблонах проектирования в вопросе 18)

Наблюдатель (Observer), Опубликовать - подписаться (Publish - Subscribe) или Delegation Event Model - GoF

Проблема

Один объект ("Подписчик") должен знать об изменении состояний или некоторых событиях другого объекта. При этом необходимо поддерживать низкий уровень связывания с объектом - "Подписчиком".

Решение

Определить интерфейс "Подписки". Объекты - подписчики реализуют этот интерфейс и динамически регистрируются для получения информации о некотором событии. Затем при реализации условленного события оповещаются все объекты - подписчики.

Адаптер (Adapter) - GoF

Проблема

Необходимо обеспечить взаимодействие несовместимых интерфейсов или создать единый устойчивый интерфейс для нескольких компонентов с разными интерфейсами.

Решение

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

Пример

Соответствует примеру из описания паттерна "Полиморфизм", см. п. 3.2.15.

Компоновщик (Composite) - GoF

Проблема

Обрабатывать группу или композицию структур объектов одновременно

Решение

Определить классы для композитных и атомарных объектов таким образом, чтобы они реализовывали один и тот же интерфейс.

Пример

См. паттерн "Стратегия", 3.2.9, необходимо учесть несколько скидок различных видов (зависят от времени, типа покупателя, типом выбранного продукта). Как применять политику ценообразования? Вырабатывается стратегия приоритета скидок, объект "Продажа" не должен обладать информацией о применяемых скидках, но можно было бы применить стратегию расчета скидок. Создается новый класс "РасчетСкидкиАлгоритмКомпозит".

Информационный эксперт (Information Expert)- GRASP

Проблема

В системе должна аккумулироваться, рассчитываться и т. п. необходимая информация.

Решение

Назначить обязанность аккумуляции информации, расчета и т. п. некоему классу (информационному эксперту), обладающему необходимой информацией.

Рекомендации

Информационным экспертом может быть не один класс, а несколько.

Пример

Необходимо рассчитать общую сумму продажи. Имеются классы проектирования "Продажа", "ТоварПродажа" (продажа отдельного вида товара в рамках продажи в целом), "ТоварСпецификация" (описание конкретного вида товара).

Необходимо распределить обязанности по предоставлению информации и расчету между этими классами. Объект "Продажа" должен передать сообщение "Рассчитать промежуточную сумму" каждому экземпляру класса "ТоварПродажа" (которые, в свою очередь, передают сообщения "СообщитьЦену" объектам "ТоварСпецификация", с целью получения информации о цене экземпляра товара), и затем просуммировать полученные результаты. Промежуточную сумму рассчитывает объект "Товар Продажа". Таким образом, все три объекта являются информационными экспертами.

Диаграмма классов проектирования.

Преимущества

Поддерживает инкапсуляцию, то есть объекты используют свои собственные данные для выполнения поставленных задач.

Недостатки

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


 

А также другие работы, которые могут Вас заинтересовать

83112. Таблиця ділення на 4. Усне розвʼязування рівнянь методом підбору. Виконання творчих завдань 53 KB
  Удосконалювати навички обчислення прикладів на множення та розвʼязування задач на конкретний зміст дії множення. Формувати вміння з рівностей на множення числа 4 складати рівностіщо містять ділення на 4 розвязувати рівняння на знаходження невідомого множника.
83113. В.Струтинський «Казка про хлопчика Абихто». М.Сингаївський «Дощ із краплі починається» 203.5 KB
  Вітання: пошлемо одне одному добрі думки і добрі відчуття посміхніться один одному. Мотивація навчальна діяльності Слайд 4 Вчитель: А я дарую вам маленькі серця із побажаннями діти вибирають різнокольорові 4 кольори серця і зачитують побажання Приємно тебе бачити у тебе гарна посмішка...
83114. Цікаві «підказки» братів наших менших 108.5 KB
  Правила за якими будемо працювати на уроці: слайд про правила роботи в групах поважати думку кожного; говорити по черзі. Вправи на вдосконалення читацьких навичок Одним із важливих винаходів яким зараз дуже поширено користується людство є Загадка про метро Дві змії в землі лежать Табуни по них біжать...
83115. Додавання виду 37+6. Розв’язування простих та складених задач 139.5 KB
  Мета уроку. Ознайомити учнів з прийомом усного додавання з перехо дом через розряд, коли в одному з доданків відсутні де сятки. Удосконалювати вміння розв’язувати прості та складені задачі; знаходити числові значення буквених виразів. Розвивати навички усного рахунку.
83116. УКРАЇНСЬКІ ПИСЬМЕННИКИ ДІТЯМ 112.5 KB
  Поширити знання учнів про життя і творчість українських письменників які писали для дітей. А хто створює книги Ми можемо уявити своє життя без книги Чому Відповіді дітей Книга має величезне значення в житті людини. І сьогодні ми поведемо розмову про письменників України які писали для дітей.
83117. Як тварини готуються до зими? Комахи восени 141.5 KB
  Мета: встановлювати причинно-наслідкові звязки між змінами в неживій природі в житті рослин та тварин восени; формувати уявлення про комах про їхню поведінку восени; співставляти відповідність між зображенням комахи і способом в який вона готується до зими; збагачувати словник дітей новими словами...
83118. ПКРУГОВОРОТ ВОДЫ В ПРИРОДЕ. ПРИРОДОВЕДЕНИЕ 1.01 MB
  Цели урока: Формировать представление о процессах испарения конденсации замерзания и таяния воды о связи с сезонными изменениями в природе. Базовые понятия на уроке: вещество газообразное состояние твёрдое состояние круговорот воды конденсация испарение гипотеза.
83119. Человек. Виды деятельности. Одежда 111 KB
  Задачи урока: образовательная: научить использовать активную лексику урока в речи актуализировать знания по теме Одежда цвета профессии; Развивающая: развивать память внимание воображение учащихся; Практическая: практика речи письма визуального восприятия материала;...
83120. Имя прилагательное как часть речи в русском и английском языках. Изменение имён прилагательных по родам и числам. Сравнение категории числа имени прилагательного в русском и английском языках 58.5 KB
  Цель: обобщить и систематизировать знания учащихся об имени прилагательном развивать умения распознавать имена прилагательные в русском и английском языках определять род и число прилагательного в русском языке и невозможность определения категории числа в английском.