디자인 패턴이란?
- 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 해결책
- 재사용할 수 있는 코드 조각은 아니고 특정 문제를 해결할 수 있는 방식을 알려주는 일반적인 개념
- 알고리즘이 목표를 달성하기 위해 필요한 일련의 절차를 나타내면, 패턴은 결과와 기능들은 제시하나, 구현은 직접 해야함
패턴을 배워야 하는 이유
- 소프트웨어 디자인의 일반적인 문제들에 대해 시도되고 검증된 해결책을을 모아두었기 때문 -> 객체 지향 디자인의 원칙을 사용해 많은 종류의 문제해결법을 배울 수 있음
- 팀원들 간의 의사소통에 있어 사용할 수 있는 공통 언어 제공
패턴에 대한 비판
- 최신 프로그래밍 언어에서는 디자인 패턴이 이미 구현되어 있는 경우도 많음 (ex: prototype)
- 프로젝트의 맥락 없이 그대로 패턴을 구현하고자 할 위험이 있음
패턴의 분류
- 복잡성, 상세도, 설계 중인 전체 시스템에 대한 적용 범위에 따라 분류됨
- 하위 설계패턴 -> 이디엄, 단일 프로그래밍 언어에만 적용 가능
- 상위 설계패턴 -> 아키텍처 패턴, 대부분의 언어로 아키텍처 패턴을 구현할 수 있으며, 다른 패턴들과 달리 앱 전체의 구조를 설계하는데 사용 가능
- 패턴의 의도, 목적에 따라 분류할 수 도 있음
생성 패턴: 기존 코드의 재활용과 유연성을 증가시키는 객체 생성 메커니즘 제공
구조 패턴: 구조를 유연하고 효율적으로 유지하면서 객체와 클래스를 더 큰 구조로 조합하는 방법 제공
행동 패턴: 객체 간의 효과적인 의사소통과 책임 할당을 처리
출처:
https://refactoring.guru/ko/design-patterns/what-is-pattern