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

Проблема

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

Решение

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

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

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

Пример

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

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

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

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

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

Недостатки

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


 

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

66321. Сказка о попе и работнике его Балде 237.5 KB
  Пушкиным Сказки Пушкина мы читаем в детстве и с уверенностью считаем что до конца разобрались в этом вопросе что никаких загадок в нем больше нет. Практически все сказки в разное время были написаны Пушкиным в имении Болдино.
66322. БАСКЕТБОЛЬНОЕ ШОУ 31 KB
  В нашей программе вы увидите выступление баскетболистов профессионалов нашей школы конечно это не профессионалы НБА но тем не менее вы сможете увидеть виртуозное ведение мяча точные броски молниеносные передачи
66323. Байки. Езопова байка «Хлібороб і орел» 89.5 KB
  Тема нашого уроку Езопові байки. Що таке байка З яких частин складається байка Що таке мораль Хто є героями байок Як називають авторів байки Яких байкарів знаєте Чим байка відрізняється від казки Гра З якої байки предмет...
66324. Білокора красуня 67 KB
  Як зовуть її Берізка Назва берізка прийшла до нас із глибокої давнини. Чому радіє берізка Що шепоче теплому вітерцю сонечку Складемо казочку Сонечко та Берізка. Послухайте початок: Жила була собі Берізка.
66325. Учитель творить Людину… 54.5 KB
  Учитель знайомить їх із спогадами про свою першу вчительку українського письменника І. Чендеєм Бесіда за змістом Класний керівник: Який загальний настрій цих спогадів На яких спогадах акцентує увагу письменник Чому навчала дітей учителька Який основний урок виніс письменник з її розповідей...
66326. Урок-путешествие в «Огненную страну» 62 KB
  Огонь одно из самых больших чудес природы с которым человек познакомился. Огонь дарил человеку тепло свет защищал от диких зверей. Люди сколько жили на свете Пуще глаза огонь берегли. Ведь огонь в холода в непогоду У костра их всегда согревал.
66327. Безпека вдома. Електроприлади. Безпека під час користування електроприладами 59 KB
  Діти за кожну правильну відповідь маємо можливість із частин збудувати будинок. Та не збагну я діти Хто мені допомагає світити Учитель: Дорога лампочко Не сумуй лапочко Зараз розкажуть діти що відбувається з тобою у світі. То ж запамятай лампочко І запамятайте діти...
66328. Волшебная страна – библиотека 183.5 KB
  Книги встречают нас с самого раннего детства и сопровождают нас всю жизнь они заставляют нас совершенствоваться. Что же тогда в них хранили Книги Конечно же книги В Египте их писали на папирусе а в Индии составляли их из нарезанных пальмовых листьев в Междуречье выцарапывали на глиняных дощечках.
66329. ОПИС НАТЮРМОРТУ КАТЕРИНИ БІЛОКУР «КАВУН, МОРКВА, КВІТИ» 130.5 KB
  Мета: вчити аналізувати художнє полотно виділяти головне відбирати відповідні прикметники для опису предметів; розвивати структурно композиційні та мовностилістичні вміння; виховувати естетичні смаки. Обладнання: репродукція натюрморту Катерини Білокур Кавун морква квіти...