반응형
디자인 패턴이란?
디자인 패턴은 건축학 및 컴퓨터 과학에서 사용되는 용어로, 설계 문제에 대한 해답을 문서화하기 위해 고안된 형식 방법이다.
컴퓨터 과학에서의 디자인 패턴이란
"프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나"
과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재사용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다. 즉, 개발자들끼리 협업을 잘 할 수 있도록 코드들의 패턴을 정해 코드의 질, 효율성을 높히는 것을 뜻한다.
=> 효율적인 코드를 만들기 위한 방법론
디자인 패턴의 장단점
장점
- 개발자 간의 원활한 의사소통
- 소프트웨어 구조 파악 용이
- 재사용을 통한 개발 시간 단축
- 설계 변경 요청에 대한 유연한 대처
- 불필요한 리소스 낭비 방지
단점
- 객체 지향 설계 / 구현 위주로 사용됨
- 초기 투자 비용 부담
디자인 패턴의 종류
GoF(Gang of Four) 디자인 패턴 : 디자인 패턴을 용도에 따라 나누면, 생성, 행동, 구조라는 3가지 범주로 패턴을 나눌 수 있다.
1. Creation Pattern (생성 패턴)
객체 인스턴스를 생성하는 패턴으로, 클라이언트와 그 클라이언트가 생성해야 하는 객체 인스턴스 사이의 연결을 끊어주는 패턴
- 추상 팩토리 메서드 (Abstract Factory Methods) : 관련된 부품을 조립해서 제품을 만든다.
- 팩토리 메서드 (Factory Methods) : 인스턴스 작성을 하위 클래스에게 맡긴다.
- 빌더 (Builder) : 잡한 인스턴스를 조립한다.
- 프로토타입 (Prototype) : 복사해서 인스턴스를 만든다.
- 싱글톤 (Singleton) : 단 하나의 인스턴스.
2. Structural Pattern (구조 패턴)
클래스와 객체를 더 큰 구조로 만들 수 있게 구성을 사용하는 패턴
- 어댑터 (Adapter) : 한 꺼풀 덧씌워 재사용.
- 브리지 (Bridge) : 기능의 계층과 구현의 계층을 분리한다.
- 컴퍼지트 (Composite) : 그릇과 내용물의 동일시.
- 데코레이터 (Decorator) : 장식과 내용물의 동일시.
- 퍼사드 (Facade) : 간단한 창구.
- 플라이웨이트 (Flyweight) : 동일한 것을 공유해서 낭비를 없앤다.
- 프록시 (Proxy) : 필요해지면 만든다.
3. Behavioral Pattern (행동 패턴)
클래스와 객체들이 상호작용하는 방법과 역할을 분담하는 방법을 다루는 패턴
- 책임 연쇄 (Chain of Responsibility) : 책임 떠넘기기.
- 커맨드 (Command) : 명령을 클래스로 만든다.
- 인터프리터 (Interpreter) : 문법 규칙을 클래스로 표현한다.
- 이터레이터 (Iterator) : 하나씩 세다.
- 미디에이터 (Mediator) : 상대는 카운셀러 한사람뿐.
- 메멘토 (Memento) : 상태를 보존한다.
- 옵저버 (Observer) : 상태의 변화를 통지한다.
- 스테이트 (State) : 상태를 클래스로서 표현한다.
- 스트레티지 (Strategy) : 알고리즘을 모두 교체한다.
- 템플릿 메서드 (Template Meothods) : 체적인 처리를 하위 클래스에게 맡긴다.
- 비지터 (Visitor) : 구조 안을 돌아다니면서 일을 한다.
참고 사이트
반응형
'Computer Science > CS 스터디' 카테고리의 다른 글
브라우저 개념 및 랜더링 원리 (0) | 2023.07.05 |
---|---|
AJAX(Asynchronous Javascript And XML)란 ? (0) | 2023.07.04 |
HTTP와 HTTPS의 개념과 차이 (0) | 2023.07.04 |
MVC 패턴이란? (Modal-View-Controller) (0) | 2023.03.15 |
[Git] GitHub 프로젝트 업로드 방법 (0) | 2023.02.07 |