토비의 스프링를 읽고 나서(띄엄 띄엄 봤지만) 디자인 패턴의 중요성을 느꼈다.
스프링은 디자인 패턴 그 자체이다. DI, IoC, AOP, 프록시 등 디자인 패턴이 핵심 개념에 녹아들어있다. 이는 스프링이 객체지향이라는 일관적인 패러다임을 프레임워크 설계에 적용하기 때문이다.
스프링을 사용하는 개발자가 집중해야하는 것은 객체지향적인 코드를 짜는 것이다. 엔터프라이즈 개발의 복잡함은 스프링이 객체지향적으로 해결해준다. 개발자는 프레임워크 코드에 구애받지 않고 다양한 객체지향 기법을 적용할 수 있다.
자바 디자인 패턴은 선배 개발자들의 족보(?)같은 것이다. 객체지향 기법의 재사용 가능한 솔루션을 제공한다. 이미 그 안정성을 널리 인정받은 패턴들이므로 믿고 적용할 수 있고, 패턴 이름을 언급하는 것으로 다른 개발자들과 소통이 가능하다.
나는 스프링의 핵심 원리를 더 깊게 이해하고, 객체지향적인 코드의 감각을 키우고 싶어 디자인 패턴을 공부하기로 결심했다. <br><br>
토비의 스프링 1장에서 디자인 패턴과 관련해 좋은 인사이트를 제공하여 인용하고자 한다.
패턴에서 가장 중요한 것은 각 패턴의 핵심이 담긴 목적 또는 의도다. 패턴을 적용할 상황, 해결해야 할 문제, 솔루션의 구조와 각 요소의 역할과 함께 핵심 의도가 무엇인지를 기억해둬야 한다.
디자인 패턴 공부는 객체지향 기법을 적용한 여러 패턴을 살펴보는 것이다. 반복되는 유형을 공부할 때는 그 유형을 관통하는 것이 무엇인지, 유형에서 내가 반복적으로 얻어야 하는 것인지 목표를 설정한다. 그러지 않으면 길을 잃기 쉽고 금방 흥미를 잃는다. <br><br>
다음과 같은 절차를 매 패턴마다 반복한다. 패턴 순서는 <헤드퍼스트 디자인패턴>을 기준으로 한다.