**디자인 패턴(design pattern)**은 흔히 발생하는 소프트웨어 설계 문제에 대한 재사용 가능하고 검증된 해결책으로, 반복적으로 나타나는 과제를 해결하기 위해 코드를 어떻게 구조화할지에 대한 일반적인 템플릿입니다. 디자인 패턴은 공통된 어휘와 검증된 접근 방식을 제공하여 더 좋고 유지보수하기 쉬운 코드를 작성하는 데 도움을 줍니다.
디자인 패턴이란
디자인 패턴 = 반복적으로 나타나는 설계 문제에 대한 검증되고 재사용 가능한 해결책:
→ 복사할 코드가 아니라, 코드를 구조화하는 템플릿/접근 방식
→ 경험에서 정제됨 (흔한 상황에 대한 모범 사례)
→ 예: "클래스의 인스턴스를 하나만 보장하려면?" → Singleton 패턴
→ 문제, 해결책 구조, 그리고 트레이드오프를 기술함
고전적인 분류 (Gang of Four)
생성(CREATIONAL) → 객체가 어떻게 생성되는가 (Singleton, Factory, Builder, Prototype)
구조(STRUCTURAL) → 객체/클래스가 어떻게 구성되는가 (Adapter, Decorator, Facade, Proxy, Composite)
행위(BEHAVIORAL) → 객체가 어떻게 상호작용/통신하는가 (Observer, Strategy, Command, Iterator, State)
→ 유명한 "GoF"(Gang of Four) 패턴; 그 외에도 많은 패턴이 존재함
