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

Проблема

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

Решение

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

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

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

Пример

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

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

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

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

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

Недостатки

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


 

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

59334. Відкритий урок „Тарас Шевченко” 43 KB
  Портрет Тараса Шевченка рушники серветки. Тарасова доля то правда жива. Тарасе наш Кобзарю всюди Приходиш нині ти як свій Тебе вітають щиро люди На всій Україні моїй.
59335. О слово рідне! України слово! (Сценарій свята мови) 51.5 KB
  О слово рідне України слово Богдана мудрість і Тараса заповіт. О слово рідне Мудру і прадавнє Ти вросло з могутньої землі Тебе валуєви жорстоко розпинали А ти возносилось і не корилось – ні 3 учень. О слово рідне Подарунок мами І пісня ніжна і розрада нам Я всім на світі...
59336. Пам’ять про тих, хто відійшов з життя 39.5 KB
  Наша пам’ять і вдячність за їх подвиги і жертовність. Та пам’ятай моя дитино добродушко Що мова українська солов’їна А найцінніший скарб людина І наймиліша нам родина А най дорожча Україна.
59337. Позакласний захід “Пташок викликаю з теплого краю” 57 KB
  Виходить дівчинка співає пісню: €œЩебетала пташечка€. 1 дівчинка: Благослови Боа Мати Веснукрасну зустрічати 2 дівчинка: Весну красну вітати Та віночки сплітати. 3 дівчинка: А віночки сплетемо Хороводом підемо дівчатка танцюють хоровод...
59338. Українська мова – наш скарб 70 KB
  1й учень. Люблю тебе моя Вітчизно мила Твої поля і небо голубе Бо ти дала мені малому крила Та як же не любить мені тебе 2й учень. Я буду вчитись в школі на відмінно Щоб мною ти пишатися могла 3й учень. Люблю твої ліси струмки джерельця І всеусе що є в моїм краю Тепло долонь і розуму і серця...
59339. Природа — наша мати, треба її оберігати 72.5 KB
  1й учень Губим землю топчим квіти Дерева ламаєм Що нам скажуть наші діти Чи душу ми маєм 2й учень Чи зґвалтована природа Нам гріхи відпустить Чи помститься нам за кривду Горя й зла напустить 3й учень Там Чорнобиль тут Курчатов. 4й учень Повзуть смертю по країні віруси й мікроби...
59340. Cценарій. Свято осені 73.5 KB
  Вже надходить осінь золота. Вже надходить осінь золота Молоде зелене сходить жито. Осінь осінь В гості тебе просим З щедрими хлібами З високими снопами З листопадом і дощем З перелітним журавлем.
59341. Cценарій свята „Зустріч Зими і Весни (стрітення)” 48.74 KB
  Якщо бабуся Зима 11 переможе то довго іще буде холодно а якщо красуня Весна візьме гору то поверне на тепло. Вранці на околицю села приїхала Весна а назустріч виходить стара бабуся Зима. Весна злазила із свого коня і починався двобій.
59342. APPEARANCE 31 KB
  I want to have a pen-friend from your country, Ukraine. I am a pupil of a school in London. My name is Jack. My surname is Fornson. I am 12. I study Biology, Maths, Geography, History, French. In the afternoon I have physical training lessons. I like to play football.