4명의 갱스터 개발자가 정리한 14가지 디자인 패턴
출처: 한빛미디어 헤드퍼스트 디자인패턴
아마도 위 드라마의 한 장면을 많이 봤을 것이다. 해리포터라는 영화를 봤다면 극중에서 친구0(준완)를 놀리는 친구1(익준)과 친구2(석형)의 대화를 매우 즐겁게 봤을 것이다. 준완이에게 “머글과 말포이”에 대해서 이야기를 하려면 최소 5분 이상은 소요된다. 하지만, 익준과 석형은 설명이 없어도 머글은 해리포터 세계관에서 인간을 지칭하는 대명사이고 말포이는 해리포터의 나오는 등장인물이면서 악역(?)임을 알 것이다.
이렇게 될 수 있는 이유는 친구1과 친구2가 공통으로 아는 전문 용어를 썻기 때문이다. 이렇게 공통으로 아는 전문 용어를 사용하면 좀 더 의사소통을 하기가 더 쉬워지고 대화가 심플해질 수 있다.
디자인 패턴도 마찬가지다. Jack이라는 개발자 옵저버 패턴을 적용하여 이벤트 시스템을 개발하였고 이것을 설명할 때 주제(Subject)와 구독자(Observer)에 대한 설명을 주저리 할 필요 없이 “옵저버 패턴을 기반으로 설계해서 개발 하였습니다.” 라고 이야기 하면 의미 전달을 하기 위해서 쓸대없는 말 필요 없이 핵심만 전달하여 심플하고 시간을 절약 할 수 있는 의사소통이 될 수 있다.
그래서! 우리는 디자인 패턴을 배워야 한다.
과연 OOP와 SOLID 이론을 모두 다 학습하고 완벽히 이해 했다 하더라도, 우리가 직면한 문제를 해결하면서 변화에 유연하게 잘 대처 할 수 있는 설계 및 코드 작성을 하는 것은 많은 시간과 노력 그리고 시행착오를 겪게 한다. 왜냐하면 단순히 이론만으로 해결 할 수 있는 문제가 아니기 때문이다. 우리의 실력과 경험은 아직 많이 부족하다.
그런데 너무 실망하지 말아라. 우리의 선배들이 이미 해결책을 만들어 놓았다. 그것이 바로 디자인 패턴이다. 코드만 재사용 가능한 것이 아니다. 패턴 또한 재사용이 가능하다. 우리가 개발하는 과정에서 빈번하게 발생하는 디자인 문제를 정리해서 상황에 따라 간편하게 적용할 수 있게 패턴으로 만들어 놓은 것이다. 그렇기 때문에 만들어진 패턴을 잘 활용할 수만 있다면 적지 않은 시간과 노력, 시행착오를 줄일 수 있을 것이다.
곧 설날이니, 4명의 코쟁이 형님들께 새배하고 덕담을 나누자! “헬 조선에서 저녁이 있는 삶을 만들어 주심에 감사합니다”
적용된 객체지향 이론 규칙
구현보다는 추상화 또는 인터페이스에 의존해서 코딩해라.
상속보다는 구성(합성 or 위임); Composition 활용해라.
“A는 B이다(is-A)” 보다 “A에는 B가 있다”가 더 좋을 수 있다.