SlideShare a Scribd company logo
1 of 21
GRASP PRINCIPLES By Anastasiya Rybik
ШАБЛОН ПРОЕКТИРОВАНИЯ
повторимая архитектурная конструкция,
представляющая собой решение
проблемы проектирования в рамках некоторого часто
возникающего контекста.
WHAT IS GRASP ?
General
Responsibility
Assignment
Software
Pattern
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 (Сокрытие реализации)
INFORMATION EXPERT
обязанности должны быть назначены объекту, который
владеет максимумом необходимой информации для
выполнения обязанности.
Customer Item
Shopping
Card
getTotal
CREATOR
Проблема:
Кто должен отвечать за создание нового экземпляра некоторого
класса?
Решение:
Класс В создает экземпляры класса А, если:
 Класс B содержит или агрегирует объекты A.
 Класс B записывает экземпляры объектов A.
 Класс B активно использует объекты A
 Класс B обладает данными инициализации для объектов A
LOW COUPLING
Проблема:
Как обеспечить зависимость, незначительное влияние изменений и
повысить возможность повторного использования?
Решение:
Распределить обязанности таким образом, чтобы степень
связанности оставалась низкой.
HIGH COHESION
Проблема:
Как обеспечить возможность управления сложностью, обеспечить
сфокусированность обязанностей объекта, их управляемость и
ясность
Решение:
Распределение обязанности поддерживающее высокую степень
зацепления
CONTROLLER
Проблема:
Кто должен отвечать за обработку входных системных событий?
Решение:
Делегирование обязанностей по обработке входных системных
сообщений компетентным классам:
 Внешний контроллер – класс, который представляет всю систему
в целом
 Класс, который представляет сценарий использования, в рамках
которого выполняется обработка всех системных событий
CONTROLLER
Business
Object
User InterfaceController
CONTROLLER
Признаки плохого контроллера:
1. Единственный класс контроллера в системе, получающий все
системные сообщения, которых поступает слишком много
2. Контроллер сам выполняет все задачи, не делегируя обязанности
другим классам (нарушение принципов Information Expert и
High Cohesion)
3. Контроллер имеет много атрибутов и содержит значительный
объем информации о системе, либо дублирует информацию в
других объектах
POLYMORPHISM
Проблема:
Как обрабатывать альтернативные варианты поведения на основе
типа?
Решение:
Если поведение объектов одного типа может измениться,
обязанности распределяются для различных вариантов поведения с
использованием полиморфных операций этого класса. Все
альтернативные реализации приводятся к общему интерфейсу
getArea()getArea()
getArea()
POLYMORPHISM
Circle
Shape
Triangle
PURE FABRICATION
Проблема:
Какой класс должен обеспечивать реализацию Low Coupling и
Hight Cohesion, если шаблон Information Expert (например) не
обеспечивает подходящего решения?
Решение:
Создать искусственный класс, не отражающий реального объекта
предметной области
PURE FABRICATION
Shape
ShapeReposit
ory DB
INDIRECTION
Проблема:
Как распределить обязанности, чтобы обеспечить отсутствие
прямого связывания и сохранить высокий потенциал повторного
использования?
Решение:
Присвоить обязанности промежуточному объекту для обеспечения
связывания между другими компонентами или службами, которые
не связаны между собой напрямую
INDIRECTION
Object1
Object2
Object3
Object4
INDIRECTION
Object1
Object2
Object3
Object4
Indirection
Object
PROTECTED VARIATIONS
Проблема:
Как спроектировать объекты, подсистемы и систему, чтобы
изменение этих элементов не оказывало нежелательное влияние на
другие элементы?
Решение:
Идентифицировать точки возможных вариаций или
неустойчивости; распределить обязанности таким образом,
чтобы обеспечить устойчивый интерфейс
PROTECTED VARIATIONS
Shopping
Card
IProduct
Electronics
Clothing
Grocery
QUESTIONS?

More Related Content

Viewers also liked

Survey of Astronomy Communication in Philippine Print Media (newspaper)
Survey of Astronomy Communication in Philippine Print Media (newspaper)Survey of Astronomy Communication in Philippine Print Media (newspaper)
Survey of Astronomy Communication in Philippine Print Media (newspaper)Stephanie Tumampos
 
Equity research report on it & hotels sector
Equity research report on it & hotels sectorEquity research report on it & hotels sector
Equity research report on it & hotels sectorvivekanandnaidu
 
Astronomy Outreach in the philippines
Astronomy Outreach in the philippinesAstronomy Outreach in the philippines
Astronomy Outreach in the philippinesStephanie Tumampos
 
PG-Rise-3-Report_Directional-Air-Flow-Sampler-Final (2)
PG-Rise-3-Report_Directional-Air-Flow-Sampler-Final (2)PG-Rise-3-Report_Directional-Air-Flow-Sampler-Final (2)
PG-Rise-3-Report_Directional-Air-Flow-Sampler-Final (2)Chiemela Victor Amaechi
 
SAP Business One with ProcessForce - BeOne Solution
SAP Business One with ProcessForce - BeOne SolutionSAP Business One with ProcessForce - BeOne Solution
SAP Business One with ProcessForce - BeOne SolutionBeOne Solution
 
Guar Gum - Defination, Uses and Benefits | IPI
Guar Gum - Defination, Uses and Benefits | IPIGuar Gum - Defination, Uses and Benefits | IPI
Guar Gum - Defination, Uses and Benefits | IPIinternational polymerics
 

Viewers also liked (10)

Survey of Astronomy Communication in Philippine Print Media (newspaper)
Survey of Astronomy Communication in Philippine Print Media (newspaper)Survey of Astronomy Communication in Philippine Print Media (newspaper)
Survey of Astronomy Communication in Philippine Print Media (newspaper)
 
Equity research report on it & hotels sector
Equity research report on it & hotels sectorEquity research report on it & hotels sector
Equity research report on it & hotels sector
 
Astronomy Outreach in the philippines
Astronomy Outreach in the philippinesAstronomy Outreach in the philippines
Astronomy Outreach in the philippines
 
Speaking assignment
Speaking assignmentSpeaking assignment
Speaking assignment
 
pg-rise-final-presentation (1)
pg-rise-final-presentation (1)pg-rise-final-presentation (1)
pg-rise-final-presentation (1)
 
PG-Rise-3-Report_Directional-Air-Flow-Sampler-Final (2)
PG-Rise-3-Report_Directional-Air-Flow-Sampler-Final (2)PG-Rise-3-Report_Directional-Air-Flow-Sampler-Final (2)
PG-Rise-3-Report_Directional-Air-Flow-Sampler-Final (2)
 
SAP Business One with ProcessForce - BeOne Solution
SAP Business One with ProcessForce - BeOne SolutionSAP Business One with ProcessForce - BeOne Solution
SAP Business One with ProcessForce - BeOne Solution
 
Capital market & Money market
Capital market & Money marketCapital market & Money market
Capital market & Money market
 
Career Opportunities
Career Opportunities Career Opportunities
Career Opportunities
 
Guar Gum - Defination, Uses and Benefits | IPI
Guar Gum - Defination, Uses and Benefits | IPIGuar Gum - Defination, Uses and Benefits | IPI
Guar Gum - Defination, Uses and Benefits | IPI
 

Similar to Grasp principles

07 Архитектура информационных систем. Принципы GRASP
07 Архитектура информационных систем. Принципы GRASP07 Архитектура информационных систем. Принципы GRASP
07 Архитектура информационных систем. Принципы GRASPEdward Galiaskarov
 
JavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia RedunovaJavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia RedunovaLohika_Odessa_TechTalks
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Sergey Nemchinsky
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5Technopark
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Yulia Tsisyk
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»MskDotNet Community
 
HighLoad весна 2014 лекция 1
HighLoad весна 2014 лекция 1HighLoad весна 2014 лекция 1
HighLoad весна 2014 лекция 1Technopark
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.Igor Shkulipa
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
 
"Рекомендации по проектированию API". Марина Степанова, Яндекс
"Рекомендации по проектированию API". Марина Степанова, Яндекс"Рекомендации по проектированию API". Марина Степанова, Яндекс
"Рекомендации по проектированию API". Марина Степанова, ЯндексYandex
 
Dependency injection
Dependency injectionDependency injection
Dependency injectionGetDev.NET
 
Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.EatDog
 
«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...MDDay_4
 
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)Nikolaj Mikulich
 
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, ЯндексYandex
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON
 
SOLID & GRASP
SOLID & GRASPSOLID & GRASP
SOLID & GRASPdevel123
 

Similar to Grasp principles (20)

07 Архитектура информационных систем. Принципы GRASP
07 Архитектура информационных систем. Принципы GRASP07 Архитектура информационных систем. Принципы GRASP
07 Архитектура информационных систем. Принципы GRASP
 
JavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia RedunovaJavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia Redunova
 
Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
HighLoad весна 2014 лекция 1
HighLoad весна 2014 лекция 1HighLoad весна 2014 лекция 1
HighLoad весна 2014 лекция 1
 
запахи кода
запахи кодазапахи кода
запахи кода
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
 
"Рекомендации по проектированию API". Марина Степанова, Яндекс
"Рекомендации по проектированию API". Марина Степанова, Яндекс"Рекомендации по проектированию API". Марина Степанова, Яндекс
"Рекомендации по проектированию API". Марина Степанова, Яндекс
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.
 
«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...
 
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)
ТРИЗ [TRIZ] в бизнес-системах (мастер класс Андрея Курьяна #шумныйвторник)
 
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#
 
Refactoring
RefactoringRefactoring
Refactoring
 
SOLID & GRASP
SOLID & GRASPSOLID & GRASP
SOLID & GRASP
 

Grasp principles

  • 1. GRASP PRINCIPLES By Anastasiya Rybik
  • 2. ШАБЛОН ПРОЕКТИРОВАНИЯ повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
  • 3. WHAT IS GRASP ? General Responsibility Assignment Software Pattern
  • 4. 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 (Сокрытие реализации)
  • 5. INFORMATION EXPERT обязанности должны быть назначены объекту, который владеет максимумом необходимой информации для выполнения обязанности. Customer Item Shopping Card getTotal
  • 6. CREATOR Проблема: Кто должен отвечать за создание нового экземпляра некоторого класса? Решение: Класс В создает экземпляры класса А, если:  Класс B содержит или агрегирует объекты A.  Класс B записывает экземпляры объектов A.  Класс B активно использует объекты A  Класс B обладает данными инициализации для объектов A
  • 7. LOW COUPLING Проблема: Как обеспечить зависимость, незначительное влияние изменений и повысить возможность повторного использования? Решение: Распределить обязанности таким образом, чтобы степень связанности оставалась низкой.
  • 8. HIGH COHESION Проблема: Как обеспечить возможность управления сложностью, обеспечить сфокусированность обязанностей объекта, их управляемость и ясность Решение: Распределение обязанности поддерживающее высокую степень зацепления
  • 9. CONTROLLER Проблема: Кто должен отвечать за обработку входных системных событий? Решение: Делегирование обязанностей по обработке входных системных сообщений компетентным классам:  Внешний контроллер – класс, который представляет всю систему в целом  Класс, который представляет сценарий использования, в рамках которого выполняется обработка всех системных событий
  • 11. CONTROLLER Признаки плохого контроллера: 1. Единственный класс контроллера в системе, получающий все системные сообщения, которых поступает слишком много 2. Контроллер сам выполняет все задачи, не делегируя обязанности другим классам (нарушение принципов Information Expert и High Cohesion) 3. Контроллер имеет много атрибутов и содержит значительный объем информации о системе, либо дублирует информацию в других объектах
  • 12. POLYMORPHISM Проблема: Как обрабатывать альтернативные варианты поведения на основе типа? Решение: Если поведение объектов одного типа может измениться, обязанности распределяются для различных вариантов поведения с использованием полиморфных операций этого класса. Все альтернативные реализации приводятся к общему интерфейсу
  • 14. PURE FABRICATION Проблема: Какой класс должен обеспечивать реализацию Low Coupling и Hight Cohesion, если шаблон Information Expert (например) не обеспечивает подходящего решения? Решение: Создать искусственный класс, не отражающий реального объекта предметной области
  • 16. INDIRECTION Проблема: Как распределить обязанности, чтобы обеспечить отсутствие прямого связывания и сохранить высокий потенциал повторного использования? Решение: Присвоить обязанности промежуточному объекту для обеспечения связывания между другими компонентами или службами, которые не связаны между собой напрямую
  • 19. PROTECTED VARIATIONS Проблема: Как спроектировать объекты, подсистемы и систему, чтобы изменение этих элементов не оказывало нежелательное влияние на другие элементы? Решение: Идентифицировать точки возможных вариаций или неустойчивости; распределить обязанности таким образом, чтобы обеспечить устойчивый интерфейс