책으로 CS공부를 할 때
싱글톤 패턴, 팩토리 패턴, 전략 패턴, 옵저버 패턴, 프록시 패턴, 이터레이터 패턴, MVC 패턴, MVP 패턴, MVVM 패턴 등 디자인 패턴에 대해서 학습한 적이 있다. 해당 책의 설명이 너무 단촐하기도 하였고, 예시를 JAVA로 한 부분이 많아 이해가 되지 않았었다.
그렇게 다른 학습을 하느라 잊혀져 가던 디자인 패턴이었는데, 유튜브 '노마드 코더'에 간단한 정리 영상이 올라와 블로그에 메모하고자 합니다. 저작권에 문제가 있다면 말씀 주시면 감사하겠습니다.
간단한 정리에 앞서 자신이 봤던 코드, 패턴, 용어들이 (1)사용된 이유가 저런 이유였구나 (2)저런 이름으로 불리는구나~ 를 알아가고 이를 바탕으로 자신이 원하는 패턴을 찾아보고 학습하는 계기가 되었으면 한다.
1. Creational
- 객체 생성 메커니즘을 제공
- 코드를 유연하고 재사용 가능하게 유지
- 객체 생성의 독립적 시스템을 만드는 방법
2. Structural
- 유연성과 확장성을 유지하면서 더 큰 시스템을 구축할 때
- 여러 클래스를 구성하고 결합하는 방법에 중점
- 시스템의 각 부분을 서로 독립적으로 변경 가능
3. Behavioral
- 서로 다른 객체가 서로 통신하는 방식에 관한 것
- 객체와 클래스가 서로 어떻게 통신하고 동작해야 하는지에 대한 지침을 제공

개발을 하다가 모르는 걸 급하게 그저 찾아서 쓰는 것에만 급급한 적이 있다. 하지만 공부를 하면 할수록 조금씩 시야가 넓어지는 느낌이다. 이게 왜 builder라는 파일이지? decorator? 되게 익숙한데? 프록시는 내가 아는 프록시 서버랑 연관이 있는건가? observer! 상태를 계속 확인할 때 써봤던거다! 등 다른 학습으로 인해 잊혀져 가던 패턴 지식들을, 해당 영상을 접하며 다시금 일깨우게 되어 니콜라스님에게 감사하게 생각한다.
참조 : 노마드 코더 Nomad Coders, 개발자라면 "무조건" 디자인 패턴을 배워야한다?,