상세 컨텐츠

본문 제목

[디자인패턴] 디자인패턴(Design Patterns) 소개

개발

by 알 수 없는 사용자 2011. 6. 26. 22:43

본문

728x90
728x90
안녕하세요. Yo플레입니다.

이번엔 뜬금없이 디자인패턴에 대해 이야기 해보고자 합니다.

디자인패턴이란 한마디로 족집게 참고서라고 생각합니다. 보다 유연하고 재사용 가능한, 따라서 객체지향적인 소프트웨어를 설계하기 위해 고수들이 미리 고민을 해놓은 것이죠. 따라서 이러한 패턴들을 많이 알아두면 특정한 문제들에 대해 보다 잘 대응할 수 있게 되지요.

저는 4년전에 HFDP(라고 쓰고 '헤드퍼스트 디자인패턴'이라고 읽더군요.)를 통해 디자인패턴을 처음 알게 되었습니다. 그 때, 전략(Strategy)패턴을 처음 배웠었습니다. 그 책에 있던 팩토리메소드(Factory Method)패턴, 템플릿메소드(Template Method)패턴 등도 기억에 남네요.

제가 알기로는 디자인패턴의 원전은 HFDP가 아니고 'Gof의 디자인패턴'입니다. Gof는 'Gang Of Four'의 약자로 네명의 소프트웨어 개발 전문가를 말하는데 지금 이름은 잘 기억이 안나네요.

저는 디자인패턴을 소프트웨어 위기(Software Crisis)와 살짝 연관지어보고 싶은데요. 하드웨어의 성능, 사용자 요구사항의 발전에 따라 소프트웨어도 그만큼 효율적으로 생산(?)이 되어야 하는데 구조적, 절차적 프로그래밍으로는 그게 힘들었나봐요. 그래서 객체지향적 프로그래밍이 나오게 되는데 객체지향적 프로그래밍은 아시다시피 클래스와 인터페이스 등으로 설계되어 재사용이 가능하고 유지보수에 용이하다는 장점이 있고, 이것이 소프트웨어의 생산성을 높여줄 것이다 기대하게 되죠.

그러나 이게 말처럼 쉽지만은 않았나봐요. 재사용 가능하고 유연한 객체간 설계는 아주아주 경험이 풍부한 사람들만 가능한 것이었고, 보통 개발자들에게는 객체지향 프로그래밍이 좋기는 하지만 당장의 생산성을 향상시키기에는 맞지 않았어요. 우선 기능이 돌아가는데 생성해야 할 코드가 상대적으로 많았거든요.

디자인패턴을 알아두면 몇 가지 장점이 있어요. 첫번째, 지금 당신이 고민하고 있는 소프트웨어 설계 문제 중 몇 개는 이미 디자인패턴에서 해결책을 찾을 수도 있을겁니다. 두번째, 의사소통이 효율적으로 바뀝니다. 길게 설명할 필요없이 'ㅇㅇㅇ패턴으로 갑시다'라고 말하면 충분해지죠. 세번째, 쫌 유식해보여요.

디자인패턴은 이미 많은 사람들이 관심을 가지고 공부하고 있어요. 저는 일전에 디자인패턴을 공부하다가 손을 놓았었는데, 요즘 스프링프레임워크(Spring Framework)를 공부하면서 다시 배우고 있답니다. 왜냐하면 스프링프레임워크에 패턴이야기가 너무 많이 나와서요. 슬프네요.

개인적인 생각이지만 앞으로 디자인패턴은 소프트웨어 개발에 필수적으로 알아야할 개념이 될 것 같아요. 우리가 자동차에 대해 얘기하는데 연비, 마력, 변속 등에 대해 모르면 얘기하기가 너무 힘들어지겠죠? 종종 블로그에 패턴에 대해 쓸테니 관심가지고 지켜봐주세요.

이번 글에 나왔던 디자인패턴관련 서적들 링크입니다.
Head First Design Patterns
Gof의 디자인패턴
 
728x90

관련글 더보기

댓글 영역