1. 디자인 패턴이란?

[1] [refactoring GURU] 디자인 패턴은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 해결책입니다. 이는 코드에서 반복되는 디자인 문제들을 해결하기 위해 맞춤화할 수 있는 미리 만들어진 청사진과 비슷합니다.

[3] [면접을 위한 CS 전공지식 노트] 프로그램을 설계할 때 발생하는 문제점들을 객체 간의 관계를 통해 해결할 수 있도록 정형화된 설계 방식

→ 디자인 패턴은 소프트웨어 디자인의 일반적인 문제들에 대해 시도되고 검증된 해결책들을 모은 것

1-1. 패턴을 배워야 하는 이유

패턴에 대해 아무것도 알지 못해도 프로그래머로 일할 수 있습니다.

하지만 그럼에도 사용하는 이유는?

→ [2] 팀원들이 더 효율적으로 의사소통하는 데 사용할 수 있는 공통 언어로 쓰이기 때문

1-2. 디자인 패턴을 적용시키며 발생할 수 있는 문제점

비효율적인 해결책

패턴은 이미 널리 사용되는 문제 해결 방식의 체계화를 시도합니다. 많은 사람이 이렇게 통합된 패턴들을 신봉하여 패턴을 프로젝트의 맥락에 따라 적용하지 않고 구현

부당한 사용

[1] 망치만 있으면 모든 것이 못처럼 보입니다.

많은 초보자는 패턴을 갓 배운 후, 더 간단한 코드로도 문제 해결이 되는 상황에도 모든 곳에 패턴을 적용하려고 합니다. 이것은 최근에 패턴에 익숙해진 많은 초보자를 괴롭히는 문제입니다.

2. 디자인 패턴의 분류

2-1. GoF(Gang of Four) 패턴

객체지향 소프트웨어 설계에서 자주 등장하는 23가지의 핵심 패턴