본문 바로가기
까망 동네/디자인 패턴

[디자인 패턴] GRASP 객체지향

by 까망 하르방 2024. 11. 12.
반응형

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

• 사용자 요청을 처리하는 객체

• 요청을 전달/위임하는 것에 중점

📌 MVC 패턴이란?

 

MVC 패턴이란?

MVC 패턴이란? • Model - View - Controller 구조를 말한다. • Model: 데이터나 Business Logic 내포 (= 데이터 제어) • View: 사용자에게 보여지는 인터페이스 • Controller: View ↔ Model 사이 요청/응답 관리 •

zoosso.tistory.com

 

 

Low Coupling

• 시스템 설계시 전체적인 결합도를 낮게 설계

• 클래스간 종속성을 낮게 한다

• 한 클래스의 변경이 다른 클래스에 주는 영향이 적어야 한다

 

 

High Cohesion

• 변경될 수 있는 요소들을 한 곳에 모아서 관리

• 추가 요구 사항으로 변경이 이루어진다면 하나의 객체에서 수정

• SOLID 원칙 중 SRP(Single Responsibility Principle)

📌 객체 지향 프로그래밍 5대 원칙 [SOLID]

 

객체 지향 프로그래밍 5대 원칙 [SOLID]

객체지향 프로그래밍에는 「SOLID」 원칙이 있다. 유연하고 확장성이 있는 코드 재사용에 목적을 둔다. • SRP (Single Responsibility Principle, 단일책임) • OCP (Open-Closed Principle, 개방-폐쇄 원칙) • LSP (L

zoosso.tistory.com

 

 

Polymorphism

• 객체지향은 상속과 다형성을 지원한다.

• 만약 객체 종류에 따라 행동이 바뀐다면

 객체 종류를 체크하는 조건문을 사용하지 말고 다형성 사용

 

 

Pure Fabrication

• 기능적인 책임을 별도로 한 곳에서 관리하는 객체

 ex) 데이터베이스 정보, 로그 정보

 

 

Indirection

• 두 객체 사이의 직접적인 Coupling 을 피한다.

• 두 객체 사이에 인터페이스를 사용하여 처리하는 것을 말한다

• 두 개의 서비스나 컴포넌트를 연결하지 말고 ,

• 중간 매개체에 책임을 할당하라

• Observer, Facade, Bridge, Mediator, Adapter 는 Indirection 의 대표적인 패턴이다

 

 

Protected Variations

• 요구사항에 대한 책임, 동작 변화는 객체 내부에서만 이루어져야 한다.

• 공용 인터페이스를 동일하게 유지하여

 Client 역할을 하는 객체에게 변경 사실을 숨겨야 한다

• 변경될 여지가 있으면 객체 간 캡슐화

• SOLID OCP (Open/closed principle)와 연관

 

📌 디자인 패턴(Design Pattern)이란?

 

💻 디자인 패턴(Design Pattern)이란?

👨‍💻 디자인 패턴(Design Pattern)이란?• SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다.• 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는    특정 상황에 적용할 수 있는

zoosso.tistory.com

반응형

댓글