21
GRASP PRINCIPLES By Anastasiya Rybik

Grasp principles

  • Upload
    arybik

  • View
    92

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Grasp principles

GRASP PRINCIPLES By Anastasiya Rybik

Page 2: Grasp principles

ШАБЛОН ПРОЕКТИРОВАНИЯ

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

Page 3: Grasp principles

WHAT IS GRASP ?General

Responsibility

Assignment

Software

Pattern

Page 4: Grasp principles

WHAT IS GRASP ?1. Information Expert (Информационный эксперт)

2. Creator (Создатель)

3. Controller (Контроллер)

4. Low Coupling (Слабое зацепление)

5. High Cohesion (Сильная связность)

6. Polymorphism (Полиморфизм)

7. Pure Fabrication (Чистая выдумка)

8. Indirection (Посредник)

9. Protected Variations (Сокрытие реализации)

Page 5: Grasp principles

INFORMATION EXPERT

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

Customer ItemShopping

Card

getTotal

Page 6: Grasp principles

CREATOR

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

Решение:Класс В создает экземпляры класса А, если: Класс B содержит или агрегирует объекты A. Класс B записывает экземпляры объектов A. Класс B активно использует объекты A Класс B обладает данными инициализации для объектов A

Page 7: Grasp principles

LOW COUPLING

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

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

Page 8: Grasp principles

HIGH COHESION

Проблема: Как обеспечить возможность управления сложностью, обеспечить сфокусированность обязанностей объекта, их управляемость и ясность

Решение:Распределение обязанности поддерживающее высокую степень зацепления

Page 9: Grasp principles

CONTROLLER

Проблема: Кто должен отвечать за обработку входных системных событий?

Решение:Делегирование обязанностей по обработке входных системных сообщений компетентным классам:Внешний контроллер – класс, который представляет всю систему в целом

Класс, который представляет сценарий использования, в рамках которого выполняется обработка всех системных событий

Page 10: Grasp principles

CONTROLLER

Business Object

User Interface

Controller

Page 11: Grasp principles

CONTROLLER

Признаки плохого контроллера:1. Единственный класс контроллера в системе,

получающий все системные сообщения, которых поступает слишком много

2. Контроллер сам выполняет все задачи, не делегируя обязанности другим классам (нарушение принципов Information Expert и High Cohesion)

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

Page 12: Grasp principles

POLYMORPHISM

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

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

Page 13: Grasp principles

getArea()getArea()

getArea()

POLYMORPHISM

Circle

Shape

Triangle

Page 14: Grasp principles

PURE FABRICATION

Проблема: Какой класс должен обеспечивать реализацию Low Coupling и Hight Cohesion, если шаблон Information Expert (например) не обеспечивает подходящего решения?

Решение:Создать искусственный класс, не отражающий реального объекта предметной области

Page 15: Grasp principles

PURE FABRICATION

ShapeShapeReposi

tory DB

Page 16: Grasp principles

INDIRECTION

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

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

Page 17: Grasp principles

INDIRECTION

Object1

Object2

Object3

Object4

Page 18: Grasp principles

INDIRECTION

Object1

Object2

Object3

Object4

Indirection Object

Page 19: Grasp principles

PROTECTED VARIATIONS

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

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

Page 20: Grasp principles

PROTECTED VARIATIONS

Shopping Card

IProduct

Electronics

Clothing

Grocery

Page 21: Grasp principles

QUESTIONS?