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

Проблема

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

Решение

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

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

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

Пример

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

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

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

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

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

Недостатки

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


 

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

74076. ВОЗНИКНОВЕНИЕ И РАЗВИТИЕ ФЕОДАЛЬНОГО ГОСУДАРСТВА И ПРАВА 66 KB
  Для феодальной земельной собственности были характерны следующие особенности: 1 иерархический характер; 2 сословный характер; 3 ограничение права распоряжаться землей а некоторые категории например церковные земли вообще были изъяты из гражданского оборота. Основные черты феодального права Одновременно со складыванием феодальной государственности шел процесс становления феодального права. Можно выделить следующие характерные черты феодального права.
74077. Право континентальной Европы в средние века 100 KB
  Номинально верховным собственником всей земли в государстве считался король. Но большая часть земель находилась в руках феодалов в качестве фьефа (феода) – условного наследственного земельного владения. Феодалы считались вассалами короля, а он их сеньором.
74078. Право средневековой Англии 70.5 KB
  После нормандского завоевания в Англии было образовано централизованное государство с сильной королевской властью. В руках монарха были сосредоточены законодательная, судебная и военная власть. Это объясняется, прежде всего, необходимостью сплочения завоевателей для удержания в повиновении покоренного населения.
74079. Государство и право Византии 61 KB
  Государство и право Византии. Право Византии. В Византии не было определенного порядка престолонаследия. В связи с этим в Византии широко распространился институт соправителей когда император назначал соправителя своего малолетнего сына цезаря для облегчения тому борьбы за престол.
74080. Мусульманское право 57 KB
  Социальные позиции раннего ислама (ограничение ростовщичества, установление милости беднякам, освобождение рабов, честность в торговле) сделали его привлекательным для широких народных масс. Но купеческая и племенная верхушка первоначально восприняла их настороженно, если не враждебно.
74081. ВОЗНИКНОВЕНИЕ БУРЖУАЗНОГО ГОСУДАРСТВА И ПРАВА 35 KB
  В зависимости от этого решался вопрос о форме государства созданного революцией о форме права и способах его кодификации. Буржуазное право Буржуазные революции положив начало перевороту в области социальных и политических отношений привели к значительным изменениям и в области права. Традиционные отрасли цивильного и карательного права дополняются новой и обособленной отраслью регулирования организации и деятельности учреждений государственной власти.
74082. Государство и право Англии 100 KB
  Накануне революции английское общество было расколото на два основных лагеря. Сторонники короля (роялисты) – представители “старого”, феодального дворянства и англиканского духовенства были опорой абсолютизма и выступали за сохранение прежних феодальных порядков и англиканской церкви. Противники абсолютизма (новое дворянство - “джентри” и буржуазия)
74083. Государство и право США в Новое время 76 KB
  Отношения американских колоний и метрополии в XVIII в. во многом определялись политикой Англии, стремящейся превратить колонии в сырьевой придаток и рынок сбыта. Это вызвало возмущение во всех слоях общества и в 60-е – начале 70-х гг. начались массовые выступления населения колоний. Королю была направлена петиция с просьбой прекратить притеснения и не давать повода к окончательному разрыву.
74084. Государство и право Франции в Новое время 144 KB
  В условиях острого кризиса абсолютизм был вынужден пойти на созыв Генеральных штатов, не собирающихся более 150 лет. Однако с самого начала работы делегаты третьего сословия, поддержанные частью других делегатов, вступили в конфликт с королевской властью. Депутаты организовались сначала в Национальное собрание, а позднее в Учредительное собрание