0. 디자인 패턴이란?
- 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 해결책
- 코드에서 자주 반복되는 디자인 문제를 해결하기 위해 미리 만들어진 패턴
1. 디자인 패턴 학습 이유
- 소프트웨어 디자인의 일반적인 문제들에 대해
시도되고 검증된 해결책을 모은 것 - 디자인 패턴을 배우게 되면 객체 지향 디자인의 원칙을 사용해 많은 종류의 문제를 해결 가능
2. 디자인 패턴에 대한 비판
- 약한 형식 프로그래밍 언어를 위한 클루지로 작동
클루지(Kluge): 세련되지 않지만, 효과적인 해결책- 예를 들어, 전략 패턴 → 간단한 익명(람다) 함수로 구현 가능
- 비효율적인 해결책
- 디자인 패턴을 신봉하여 프로젝트 맥락에 따라 적용하지 않고
문자 그대로 구현
- 디자인 패턴을 신봉하여 프로젝트 맥락에 따라 적용하지 않고
- 잘못된 사용
- 디자인 패턴을 갓 공부하고 바로 적용하려고 함 → 더 간단한 코드로 문제 해결이 가능함에도…
3. 디자인 패턴 분류
생성 패턴: 기존 코드의 재활용과 유연성을 증가시키는 객체 생성 메커니즘들을 제공- 팩토리 메서드, 추상 팩토리, 빌더, 프로토타입, 싱글톤
구조 패턴: 구조를 유연하고 효율적으로 유지하면서 객체와 클래스를 더 큰 구조로 조합하는 방법 설명- 어댑터, 브리지, 복합체, 데코레이터, 퍼사드, 플라이웨이트, 프록시
행동 패턴: 객체 간의 효과적인 의사소통과 책임 할당을 처리- 책임 연쇄, 커맨드, 반복자, 중재자, 메멘토, 옵서버, 상태, 전략, 템플릿 메서드, 비지터