Page 12 -
P. 12
그림 1-2 싱글톤 패턴의 클래스 다이어그램
Singleton
– instance: Singleton
– Singleton ()
+ getInstance () : Singleton
클래스 다이어그램 다음엔 가장 간단하게 구현한 자바 코드가 나옵니다.
public enum MySingletonEnum {
INSTANCE;
public void doSomethingInteresting() {}
}
1.1.1 패턴의 유래와 필요성
유명한 4인방인 GoF(에리히 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랠프 존슨(Ralph
Johnson), 존 블리사이즈(John Vlissides))의 명저 <GoF의 디자인 패턴:재사용성을 지닌 객체지향 소
프트웨어의 핵심 요소>(프로텍미디어, 2015) 출간 이후, 디자인 패턴은 세상의 뜨거운 관심을 받
았고 전 세계 개발자들은 가장 흔한 소프트웨어 공학 문제부터 패턴을 적용하여 해결하기 시작
했습니다. 보물 같은 이 책은 다양한 개발 기법과 함정을 소개하고 객체 지향 프로그래밍의 디자
인 패턴을 23개로 나누어 설명합니다. 디자인 패턴은 크게 생성(creational), 구조(structural), 행위
(behavioral) 패턴으로 분류합니다.
그런데 왜 사람들은 갑자기 디자인 패턴에 관심을 갖기 시작했을까요?
사실 그렇게 갑작스러운 일은 아니었습니다. 1980년대 들어 객체 지향 프로그래밍이 등장하
고 이 새로운 패러다임에 기초한 몇몇 프로그래밍 언어가 탄생합니다(스몰토크(Smalltalk), C++,
오브젝티브(Objective C) 같은 언어는 지금도 씁니다). 하지만 과거 절차형 프로그래밍(procedural
programming) 언어로 개발할 때와 달리 새로운 객체 지향형 프로그래밍은 그 자체로 문제가 있었고
세대교체를 너무 빨리하다 보니 무엇이 잘 돌아가고 무엇이 잘 안 돌아가는지조차 짚고 넘어갈 틈
이 없었죠.
C, 코볼(COBOL) 등의 절차형 프로그래밍 언어로 개발할 때엔 디자인 패턴으로 스파게티 코드
(spaghetti code) 같은 굵직한 이슈를 많이 해결했지만, 객체 지향 언어에는 문제점이 드러나지 않고
026
java_06.indd 26 2017-02-28 �� 3:00:50