2024. 9. 29. 00:09ㆍ개발 관련
수업에서나 자격증에서나 디자인 패턴에 대해서 이야기 하지만 직접 사용해보지 않으면 디자인 패턴의 필요성에 대해서 완전히 이해하기는 어렵다.
사실 우리는 개발할 때 디자인 패턴을 몰라도 된다.
그리고 우리는 우리가 모르는 사이에 디자인 패턴의 형태로 구현을 하고 있었을지도 모른다.
그럼에도 왜 디자인 패턴을 알아야하는지 쉽게 이해해보자!
1. 디자인 패턴이란
특정 요리를 만들 때, 어떤 재료를 사용하고 어떤 절차로 요리해야 하는지 레시피가 있다.
스파게티를 만들 때, 면을 끓인 뒤 소스와 버무리는 단계는 대부분의 스파게티 요리에 공통적으로 적용된다.
마찬가지로 개발을 할 때 특정 상황에서는 어떻게 개발해야 하는지 정의한 것이 디자인 패턴이다.
2. 디자인 패턴을 사용하는 이유
1) 재사용 가능성과 효율성
- 요리할 때 새로운 요리를 만들기 위해 매번 새로운 방법을 찾지 않고 기존 레시피를 활용하면 시간을 절약하고 더 나은 결과를 얻을 수 있다.
- 디자인 패턴도 개발에서 사용할 수 있는 검증된 방법이기 때문에 개발자가 헤매지 않고 효율적으로 개발하는데 도움을 준다.
2) 원활한 소통
- 레시피는 요리사들 간의 공통 언어가 된다. "Sauté(소량의 기름을 두르고 센불에 빠르게 볶는 조리법)로 조리하겠습니다."라고 하면 요리사들끼리는 빠른 소통이 가능해진다.
- 디자인 패턴도 마찬가지로 개발자 간의 의사소통을 원활하게 해준다. "이 문제에 싱글톤 패턴(디자인 패턴 중 하나)을 적용했습니다." 라고 하면 싱글톤 패턴을 알고 있는 개발자끼리는 긴 설명 없이 한 번에 이해할 수 있다.
3. 디자인 패턴의 분류
디자인 패턴은 생성 패턴 / 구조 패턴 / 행동 패턴으로 나누어진다.
간단히 어떤 것들이 있는지 이름만 훑어보자!
1) 생성 패턴
객체의 생성을 효율적으로 처리하고, 다양한 방식으로 객체를 만들 수 있게 도와준다.
- 추상 팩토리 (Abstract Factory)
- 빌더 (Builder)
- 팩토리 메서드 (Factory Method)
- 프로토타입 (Prototype)
- 싱글턴 (Singleton)
2) 구조 패턴
구조 패턴은 객체 간의 관계를 정의하고, 이를 통해 시스템의 구조를 효율적으로 설계할 수 있다.
- 어댑터 (Adapter)
- 브리지 (Bridge)
- 컴포지트 (Composite)
- 데코레이터 (Decorator)
- 퍼사드 (facade)
- 플라이웨이트 (Flyweight)
- 프록시 (Proxy)
3) 행동 패턴
객체가 어떻게 상호작용하는지를 정의하고, 각 객체의 역할과 책임을 명확히 할 수 있다.
- 책임 연쇄 (Chain of Responsibility)
- 커맨드 (Command)
- 인터프리터 (Interpreter)
- 이터레이터 (IIterator)
- 미디에이터 (Mediator)
- 메멘토 (Memento)
- 옵저버 (Observer)
- 스테이트 (State)
- 스트래티지 (Strategy)
- 템플릿 메서드 (Template Method)
- 비지터 (Visitor)
4. 마무리
디자인 패턴은 개발을 할 때 발생하는 일반적인 문제들을 해결하는 검증된 방법이다.
빠른 문제 해결을 돕고, 팀원 간의 소통 능력을 키우기 위해서 디자인 패턴을 공부해보는 것도 좋겠다.
다음에는 각 패턴들에 대해서 자세히 알아보자!
참고) https://refactoring.guru/ko/design-patterns/what-is-pattern
'개발 관련' 카테고리의 다른 글
React의 ErrorBoundary 사용 꿀팁! (4) | 2024.09.25 |
---|---|
TypeScript의 Object 타입 선언 (0) | 2023.04.25 |
TypeScript의 Type선언 (0) | 2023.04.25 |
React의 Suspense, ErrorBoundary (0) | 2023.04.20 |
React의 Router (0) | 2023.04.20 |