GRASP 란
• General Responsibility Assignment Software Patterns
• 객체 지향은 책임 역할 각 객체에 부여하는 것
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
• 정보를 가지고 있는 객체에 역할을 부여하자 .
• 객체는 데이터와 처리 로직을 함께 관리
• 데이터를 감추고자 하면 내부에서만 로직을 처리하고 외부에는 기능만 제공
Creator
• 객체의 context 알고 있는 다른 객체가 있다면 해당 객체에 생성 부여
→ A 객체 생성을 B객체에서 역할로 부여
= B 객체가 A 객체를 포함
= B 객체가 A 객체 정보 기록
= A 객체가 B 객체의 일부
= B 객체가 A 객체를 긴밀하게 사용하고 있다
= B 객체가 A 객체의 생성에 필요한 정보를 가지고 있다
Controller
• 사용자 요청을 처리하는 객체
• 요청을 전달/위임하는 것에 중점
Low Coupling
• 시스템 설계시 전체적인 결합도를 낮게 설계
• 클래스간 종속성을 낮게 한다
• 한 클래스의 변경이 다른 클래스에 주는 영향이 적어야 한다
High Cohesion
• 변경될 수 있는 요소들을 한 곳에 모아서 관리
• 추가 요구 사항으로 변경이 이루어진다면 하나의 객체에서 수정
• SOLID 원칙 중 SRP(Single Responsibility Principle)
Polymorphism
• 객체지향은 상속과 다형성을 지원한다.
• 만약 객체 종류에 따라 행동이 바뀐다면
객체 종류를 체크하는 조건문을 사용하지 말고 다형성 사용
Pure Fabrication
• 기능적인 책임을 별도로 한 곳에서 관리하는 객체
ex) 데이터베이스 정보, 로그 정보
Indirection
• 두 객체 사이의 직접적인 Coupling 을 피한다.
• 두 객체 사이에 인터페이스를 사용하여 처리하는 것을 말한다
• 두 개의 서비스나 컴포넌트를 연결하지 말고 ,
• 중간 매개체에 책임을 할당하라
• Observer, Facade, Bridge, Mediator, Adapter 는 Indirection 의 대표적인 패턴이다
Protected Variations
• 요구사항에 대한 책임, 동작 변화는 객체 내부에서만 이루어져야 한다.
• 공용 인터페이스를 동일하게 유지하여
Client 역할을 하는 객체에게 변경 사실을 숨겨야 한다
• 변경될 여지가 있으면 객체 간 캡슐화
• SOLID OCP (Open/closed principle)와 연관
'까망 동네 > 디자인 패턴' 카테고리의 다른 글
[객체 지향] IS-A 관계와 HAS-A 관계 (2) | 2024.10.21 |
---|---|
[디자인패턴] 어댑터 패턴 (Adapter Pattern) (8) | 2024.10.13 |
💻 디자인 패턴(Design Pattern)이란? (6) | 2024.08.02 |
[디자인패턴] 체인 패턴 (Chain of Responsibility, 책임 연쇄) (4) | 2024.07.31 |
객체 지향 프로그래밍 5대 원칙 [SOLID] (40) | 2023.11.19 |
댓글