-
프로그래밍 면접 이렇게 준비한다. - 5. 디자인패턴프로그래밍/방법론 2014. 7. 25. 18:45반응형
- 세상에는 똑같은 프로그래밍 프로젝트는 없지만 프로젝트를 하다 보면 전에 비슷한 걸 해 본 듯한 느낌이 들 때가 종종 있다. 그런 느낌이 든다는 것은 비슷한 아키텍처를 가지는 광범위한 문제에 어떤 공통된 접근법을 적용할 수 있을지도 모른다는 것을 의미한다. 이런 접근법을 디자인 패턴이라고 부른다.
1. 디자인 패턴이란 무엇인가?
- 디자인 패턴이란? 객체지향 프로그래밍에서 공통적인 디자인 문제를 찾아내고 해결하는 가이드라인이다.
- 디자인 패턴은 프레임워크나 클래스 라이브러리와 달리 추상적인 것으로, 실제 코드를 제공하는 건 아니고 특정 유형의 프로그래밍 문제를 해결하는 방식을 제공해 주는 역할을 한다.
- 객체지향 애플리케이션 아키텍처를 위한 일련의 조리법 같은 것
ex) 반복자, 싱글턴
2. 디자인 패턴을 쓰는 이유?
- 첫째, 어찌 보면 당연한 것으로, 여러 프로그래머들의 경험과 지혜를 모아서 공통적인 소프트웨어 디자인 문제를 해결하는 데 도움이 될 수 있게 만들어놓은 것이기 때문이다.
- 둘째, 디자인 문제와 그 해결책을 논할 때 디자인 패턴이 간결한 용어모음을 제공한다는 점이다. 다른 프로그래머와 일상적인 논의를 할 때, 디자인 문서를 작성할 때, 프로그램에 주석을 달 때 등, 다른 프로그래머와 디자인에 관한 의사결정에 관한 얘기할 때 이런 용어가 여러모로 도움이 된다.
- 하지만, 만병통치약은 아니다! 잘못 쓰면 애플리케이션이 쓸 데 없이 복잡해질 수 있고, 패턴을 틀린 방법 또는 비효율적인 방법으로 구현했다가는 버그가 생기거나 성능이 나빠질 수 있다.
- 사용하면 안 되는 패턴에 대한 연구도 있다. 효율적이지 않거나 효과적이지 못한 코드를 만들어낼 수 있는 꼼수나 잘못된 관행 같은 게 이런 안티패턴에 속한다.
3. 면접과 디자인 패턴
- 감마 외 3인이 쓴 디자인 패턴 책에서는 매우 정형적이고 상세한 접근법을 통해 23가지 기본 디자인 패턴을 소개한다.
1) 생성패턴
- 싱글톤(Singleton) : 어떤 클래스의 인스턴스 개수가 최대 한 개를 넘지 않도록 하는 패턴이다. 이 인스턴스는 공유자원에 대한 문지기 또는 중앙에 있는 소통의 중심 역할을 한다. 애플리케이션에서 모든 메소드는 싱글톤을 통해서만 액세스할 수 있다.
핵심 시스템 함수는 보통 싱글톤을 통해 액세스 한다. 예를 들어 자바의 java.lang.Runtime 클래스는 애플리케이션의 실행 환경과의 소통을 위해 쓰이는 싱글톤이다. 전역 변수를 대체하기 위해 싱글톤을 쓰기도 하지만, 싱글톤 패턴을 쓴다고 해서 전역 변수의 전역 상태 문제가 해결되는 건 아니기 때문에 이런 식으로 싱글톤을 사용하는 것을 안티 패턴으로 보는 사람도 많다.
싱글톤이 정적 메소드보다 나은 이유는 뭘까?
① 상속과 인터페이스 : 싱글톤은 객체다. 따라서 베이스 클래스로부터 상속을 받고 인터페이스를 구현할 수 있다.
② 다수 객체로 전환 가능 : 나중에 마음이 바뀌어 (예를 들어 스레드당 하나같은 식으로) 여러 객체를 만들고자 하는 경우에 코드를 많이 바꾸지 않고도 원하는 바를 이룰 수 있다. (물론 이렇게 되면 더 이상 싱글톤 패턴을 쓰지 않는 셈이 된다.
③ 동적 바인딩 : 싱글톤을 생성하기 위해 실제로 사용하는 클래스를 컴파일시가 아닌 실행시에 결정할 수 있다.
반응형'프로그래밍 > 방법론' 카테고리의 다른 글
구글이 원하는 개발자 – 문제 해결 역량 (4) 2014.10.31 개발자로서 가져야할 인덕 (0) 2014.10.29 프로그래밍 면접 이렇게 준비한다. - 4. 객체지향 (0) 2014.07.25 프로그래밍 면접 이렇게 준비한다. - 3. 트리 (0) 2014.07.25 스크럼(Scrum) (0) 2014.06.19