본문 바로가기

Program/Design Pattern

[Design Pattern] 디자인 패턴?

 위키백과에서 정의하고 있는 디자인 패턴은 다음과 같다.

 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것.

 

 위의 정의는  디자인 패턴을 잘 설명해 주고 있다. 여기서 핵심은 방법 이라는 것이다. 이것이 디자인 패턴을 알고 있으면서도 쉽게 적용하기가 힘든 이유다.
 잘 만들어진 라이브러리나 프레임워크들은 모두 이 디자인 패턴이 녹아 들어 있을 것이다. 평상시는 그저 라이브러리나 프레임워크를 사용할 뿐이다.


 그렇다고 해서 너무 어렵게 생각할 필요도 없다고 본다. 좋은 프로그래밍 습관을 가진 프로그래머는 아마 자신도 모르게 디자인 패턴을 사용하고 있을 것이다.

 디자인 패턴을 공부할 때 객체지향(OO : Object-Oriented)에 대한 이해도 필요하지만 나는 시야를 좁게 보지 말고 넓게 보는 것이 가장 중요하다고 생각한다. 우리가 사용하는 프로그램들은 생각보다 더 복잡한 구조로 구성되기 때문에 디자인 패턴에서 나오는 23가지 패턴의 일부분만 가지고는 좋은 소프트웨어가 탄생하기 힘들다. 모든 부분에 대해서 상황에 맞게 필요한 역할과 흐름을 분명히 이해할 수 있는 능력이 있어야 디자인 패턴은 큰 힘을 발휘할 것이다.

 이렇게 글을 쓰면서도 디자인 패턴을 활용하여 프로그래밍을 한다는 것은 나에게는 매우 어려운 과제다. 그저 좋은 프로그래밍 습관을 가지기 위해 항상 생각하면서 노력할 따름이다.


 디자인 패턴을 공부하면서 추천할 만한 책은 YUKI HIROSHI의 'Java 언어로 배우는 디자인패턴 입문' 이나 'Head First Design Patterns'이다. 딱히 한권을 뽑으라면 일본인 YUKI HIROSHI의 책을 선택하겠지만, 그렇다고 한 권만 가지고 공부하는 것은 바람직하지 않다고 본다. 모든 책들은 각각의 장단점이 있기 때문에 디자인 패턴 뿐만 아니라 모든 전공과 관련하여 공부를 할 때에는 최대한 많은 책을 여러번 보는 것이 좋다고 생각한다.