Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
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; просмотров: 299. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |