본문 바로가기
Lecture/Design Pattern

[Design Pattern] Singleton pattern (싱글톤 패턴)

by 알 수 없는 사용자 2012. 11. 24.
반응형


디자인 패턴 몇가지를 소개해드리려고 합니다.


디자인 패턴은 <<꼭! 사용해서 개발해야한다.>> 라는 건 아닙니다.

하지만 현재 우리가 개발하면서 <<아, 이런건 어떻게 쉽게 안되나?>> 같은 고민들.

선배 개발자들이 이미 고민 했던 것들 입니다. (돌고도는 개발 이슈들.)


선배들이 친절하게 이렇게 하면 잘~해결 되더라. 라는 해결 방법을 정리해둔게 디자인 패턴이죠.


디자인 패턴을 공부할때, UML을 알아두시면 이해에 도움이 됩니다.

(UML은 개발자 기본 능력입니다.)


기본이 되는 몇 가지 패턴을 정리해보면서 다른 서적에 없는 예제를 작성해보겠습니다.

기초 오브 기초 패턴만 정리해두면 나머지 패턴은 응용, 결합 형태이니 공부하실때 수월하시겠죠.


패턴의 기본 설명은 잘 설명된 타 블로그를 링크하고,

저는 예제 중심으로 진행하겠습니다.


첫 패턴은 싱글톤(Singleton) 패턴입니다.

기본 설명 + UML + 주의사항까지 잘 정리한 블로그입니다.

설명 : http://blog.naver.com/knix008?Redirect=Log&logNo=40172522219


싱글톤패턴은 딱히 예제로 작성해서 프로젝트로 만들만한게 없어서.. 

다음 패턴과 결합해서 사용하는 걸로 하겠습니다.


싱글톤은 하나의 인스턴스를 다른 객체가 돌려쓰고 싶을 때,

즉 공유하고 싶은 객체가 있을 때 사용합니다.


소스의 빨간색으로 표시된 부분이 싱글톤 패턴이 적용된 부분입니다.

private. public 접근자를 중요하게 보세요.

나머지는 걍 세터게터.



이 Cashbox 인스턴스는 내부에서 정해진 룰에 의해서만 인스턴스를 받아 갈 수있어야합니다.

인스턴스를 이 클래스, 저 클래스에서 new 생성자를 통해 생성하지 못하도록 

생성자를 private으로 합니다.


인스턴스 생성만 막으면 어디서도 가져다 쓰질 못하니.

가져갈 수 있도록 public 메소드를 만들어줍니다.


최초 메소드 호출에만 인스턴스를 생성해서 반환하고, 그 이후는 이미 생성한 인스턴스를 반환하게 됩니다.


직접 생성하지는 못하지만 생성된 하나의 인스턴스를 돌려쓰게 되었습니다.


다음 포스트에는 이 객체를 사용하여 자판기를 만들어 보겠습니다.