37일차 TIL: 디자인 패턴
2024. 5. 10. 17:55ㆍ개발 공부
728x90
반응형
#1. 오늘의 학습 키워드
디자인 패턴에 대해
- 전에 아키텍처 패턴에 대해서 공부를 했었다.
- 이번에는 좀 더 개발과 가까이 있는 패턴인 디자인 패턴에 대해서 알아보자.
- 디자인 패턴은 아키텍처 패턴보다 하위 수준의 설계로 봐도 된다.
- 아키텍처 패턴
- 전체 시스템의 구조를 설계하기 위함
- 디자인 패턴
- 서브 시스템에 속하는 컴포넌트들과, 그 사이의 관계를 설계하기 위함
- 이번에는 좀 더 개발과 가까이 있는 패턴인 디자인 패턴에 대해서 알아보자.
#2. 공부한 내용
1. 디자인 패턴
- 개발하면서 발생하는 반복적인 문제에 대한 해결 방안
- 디자인 패턴은 객체 지향의 4대 특성과 설계 원칙 (SOLID) 를 기반으로 구현 되어있다.
- 객체 지향 4대 특성
- 캡슐화 (encapsulation)
- 속성과 메서드를 하나로 묶어서 인터페이스로 해당 데이터들로 접근할 수 있게끔 처리
- 정보 은닉이 가능하고, 재사용 용이, 인터페이스 단순해지는 장점
- 상속 (inheritance)
- 상위 클래스의 속성과 메서드를 하위 클래스가 물려받음
- 재사용 용이
- 추상화 (abstraction)
- 인터페이스화
- 가독성과 재사용성, 모듈간 독립성을 높임
- 다형성 (polymorphism)
- 하나의 메시지에 대해 각각의 클래스가 가지고 있는 특성으로 응답할 수 있는 능력
- 캡슐화 (encapsulation)
- SOLID
- https://second-brain.tistory.com/38
- SRP
- 단일 책임 원칙
- OCP
- 개방 폐쇄 원칙
- LSP
- 리스코프 치환 원칙
- ISP
- 인터페이스 분리 원칙
- DIP
- 의존 역전 원칙
- 객체 지향 4대 특성
- 디자인 패턴은 흔한 개발 과정 속에서의 문제에 대한 해결책 중 모범 사례를 모아둔 것이라고 생각 할 수 있다.
- 디자인 패턴은 OOP 4대 원칙을 SOLID 를 기반하여 사용해서, 제작된 올바른 가이드라인 정도로 볼 수 있다.
1) GoF
- 디자인 패턴 중에 유명한 GoF 디자인 패턴들이 있다.
- 이를 생성, 구조, 행위 패턴으로 분리할 수 있다.
- 생성
- 추상 팩토리
- 한 번에 연관 된 객체 집합을 인터페이스를 통해 생성하는 패턴
- 빌더
- 객체를 단순화된 방식으로, 단계적으로 생성
- 팩토리 메서드
- 객체 생성 인터페이스를 정의하고, 그 중 어떤 클래스가 인스턴스화 될 지는 서브 클래스가 결정하는 방식
- 프로토타입
- 기존 객체를 템플릿으로 사용하여, 기존 객체를 복제하여 새로운 객체 생성하는 패턴
- 싱글톤 패턴
- 하나의 클래스 인스턴스를 딱 하나만 생성하여, 전역에서 접근 가능하게끔 보장하는 패턴
- 추상 팩토리
- 구조
- 어댑터
- 호환성 없는 클래스를 사용하기 위해 Wrapper를 제공하는 패턴
- 브릿지
- 추상화와 구현을 분리하여, 각각 확장할 수 있게끔 하는 패턴
- 컴포지트
- 여러 객체를 가진 단일, 복합 객체를 동일하게 다루어, 트리 구조의 객체를 구성하는 패턴
- 데코레이터
- 객체의 기능을 동적으로 추가하여, 확장하는 패턴
- 퍼사드
- 단순한 인터페이스를 통해 서브 시스템을 쉽게 사용할 수 있도록 하는 패턴
- 플라이웨이트
- 객체를 공유함으로써 메모리 사용을 최적화하는 패턴
- 프록시
- 다른 객체에 대한 인터페이스(프록시) 를 제공하여, 접근 제어, 지연로딩 등을 구현하는 패턴
- 어댑터
- 행위
- 책임 연쇄
- 한 객체가 처리 못 할 시 책임을 다른 객체로 넘기는 패턴
- 커맨드
- 요청을 객체로 캡슐화하여, 단순화하는 패턴
- 인터프리터
- 언어에 문법 표현을 정의하는 패턴
- 반복자
- 동일한 인터페이스를 사용하도록하는 패턴
- 중재자
- 객체 간 상호 작용을 캡슐화하여, 객체 간 직접적인 통신을 방지
- 메멘토
- 객체의 상태를 저장하여, 해당 시점으로 추후 복원할 수 있는 기능을 제공
- 옵저버
- 객체 간 관계를 정의하여, 한 객체의 상태 변경을 다른 객체에게 알릴 수 있게 하는 패턴
- 상태
- 객체의 상태를 캡슐화하여, 상태 전환을 관리하고, 상태에 따라 동일한 동작을 다르게 수행할 수 있게 도와주는 패턴
- 전략
- 독립적인 알고리즘을 정의하고, 런타임에서 클라이언트의 영향을 받지 않는 방향으로 수행 할 수 있게 해준다.
- 템플릿 메서드
- 유사한 하위 클래스들을 묶어서, 상위 클래스에서 정의하는 패턴
- 방문자
- 필요할 때마다 객체 구조를 순회하면서, 다양한 연산을 수행할 수 있게 해준다.
- 책임 연쇄
728x90
반응형
'개발 공부' 카테고리의 다른 글
38일차 TIL: MOM(메시지 지향 미들웨어) (0) | 2024.05.11 |
---|---|
99클럽 36일차 TIL: jenkins (1) | 2024.05.09 |
99클럽 35일차 TIL: DevOps (0) | 2024.05.08 |
99클럽 34일차 TIL: 개발 방법론 - Agile (0) | 2024.05.07 |
99클럽 33일차 TIL: 클라이언트 사이드 캐시 (1) | 2024.05.06 |