Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

High Cohesion - Сильное зацепление




Сильно связан с Low Coupling(Слабая связанность): все задачи, к-рые решаются классом, д.б. очень сильно сцеплены м-ду собой.

Проблема: Необх-мо обеспечить выполнение об-ми разнород-ных ф-ций.

 Решение: Обеспечить распределение обязанностей с высоким

зацеплением.

Преимущества: Классы с высокой степенью зацепления просты в поддержке и повторном использовании.

Недостатки: Иногда бывает неоправданно использовать высокое за-цепление для распределенных серверных обьектов. В этом случае для обеспечения быстродействия необходимо создать несколько более крупных серверных обьектов со слабым зацеплением.

----------------------------------------------------------------------------------------------------

High Cohesion — это принцип, который задаёт свойство сильного зацепления внутри подсистемы. Классы (подсистемы) таким образом получаются сфокусированными, управляемыми и понятными. Зацепление (cohesion) (или более точно, функциональное зацепление) — это мера связанности и сфокусированности обязанностей класса. Считается что объект (подсистема) обладает высокой степенью зацепления, если его обязанности тесно связаны между собой и он не выполняет огромных объемов работы.

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

  • Трудность понимания.
  • Сложность при повторном использовании.
  • Сложность поддержки.
  • Ненадежность, постоянная подверженность изменениям.

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

 

 

GRASP. Polymorphism

GRASP (General Responsibility Assignment Software Patterns — общие образцы распределения обязанностей) — паттерны, используемые в ООП для решения общих задач по назначению обязанностей классам и объектам.

Polymorphism – Полиморфизм

· 2 реализации:

Ø перегруженный м-д классов (одинаковые имена, но разные параметры)

Ø переопределённый метод

· расширяет понятие полиморф-ма на целые сис-мы

· реализуется ч-з некот. унифицированные интерфейсы

Проблема: Как обрабатывать альтернативные варианты поведения на основе типа? Как заменять подключаемые компоненты системы?

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

Преимущества: Впоследствии легко расширять и модернизировать систему.

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

--------------------------------------------------------------------------------------------------

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

 

 

GRASP. Pure Fabrication

GRASP (General Responsibility Assignment Software Patterns — общие образцы распределения обязанностей) — паттерны, используемые в ООП для решения общих задач по назначению обязанностей классам и объектам.

Pure Fabrication – Чистая выдумка

Связан с абстракцией.

Проблема: Какой класс должен обеспечивать реализацию паттернов "Высокое зацепление", и "Низкая связанность"?

Решение: Присвоить группу обязанностей с высокой степенью зацепления классу, который не представляет конкретного понятия из предметной области (синтезировать искусственную сущность для обеспечения высокого зацепления и слабого связывания).

Преимущества: Класс будет обладать низкой степенью связывания и высокой степенью зацепления.

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

------------------------------------------------------------------------------------------------

Чистая выдумка — это класс, не отражающий никакого реального объекта предметной области, но специально придуманный для усиления зацепления, ослабления связанности или увеличения степени повторного использования. Pure Fabrication отражает концепцию сервисов в модели Программирование от предметной области.

 

GRASP. Indirection

GRASP (General Responsibility Assignment Software Patterns — общие образцы распределения обязанностей) — паттерны, используемые в ООП для решения общих задач по назначению обязанностей классам и объектам.

Indirection – Посредник

Класс, налаживающий взаимоотношения м-ду сис-ми, имеющими интер-с.

Проблема: Как перераспределить обязанности обьектов, чтобы обеспечить отсутствие прямого связывания?

Решение: Присвоить обязанности по обеспечению связи между службами или компонентами промежуточному объекту.

-----------------------------------------------------------------------------------------------

Indirection поддерживает слабую связанность (и возможность повторного использования) путём назначения обязанностей посредника между ними промежуточному объекту.

Пример: Model-View-Controller, который позволяет ослабить связь между данными и их представлением с помощью введения класса-посредника (контроллер), отвечающего за поведение.

 

 

GRASP. Protected Variations

GRASP (General Responsibility Assignment Software Patterns — общие образцы распределения обязанностей) — паттерны, используемые в ООП для решения общих задач по назначению обязанностей классам и объектам.

Protected Variations – Сокрытие реализации

Расширяет понятие инкапсуляции для подсистем.

Проблема: Как спроектировать систему так, чтобы изменение одних ее элементов не влияло на другие?

 Решение: Идентифицировать точки возможных изменений или неустойчивости и распределить обязанности таким образом, чтобы обеспечить устойчивую работу системы.

----------------------------------------------------------------------------------------------

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

 

 

Структурные шаблоны. Adapter

Структурные шаблоны (Structural

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

Adapter – Адаптер

Адаптер, Adapter или Wrapper/Обёртка — структурный ШП, предназначенный для организации использования функций объекта, недоступного для модификации, через специально созданный интерфейс.

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

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

Следствия: Шаблон Адаптер позволяет включать уже существующие объекты в новые объектные структуры, нез-мо от различий в их интерфейсах.

Реализация: Включение уже существующего класса в другой класс. Интерфейс включающего класса приводится в соответствие с новыми требованиями, а вызовы его методов преобразуются в вызовы методов включённого класса.

Пример:      

Интеграция разрабатываемой системы с различными внешними системами учета налогов. Используются локальные программные объекты, обеспечивающие адаптацию (Адаптеры), при отправке сообщения к такому объекту выполняется обращение к внешней системе с использованием ее собственного программного интерфейса.

 Использование полиморфизма оправдано для адаптации к различным внешним системам.

 










Последнее изменение этой страницы: 2018-05-31; просмотров: 250.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...