Singleton Design Patterns

Tags:

http://zdnet.co.kr/news/column/hotissue/0,39024748,39131344,00.htm

싱글톤에 대해서만 이야기하는 글이 이렇게 많다는 것에 대해서 어떻게 생각하나요.
그것이 제일 배우고 적용하기가 쉬워서?
아니면, 우리가 객체지향 – 즉 new를 해서 객체를 만든다 – 이라는 길에 들어서기
전에 이미 구조나 절차적인 방식의 프로그램에 너무 익숙해져있어서?
아니면 구조나 절차적인 방식의 문제 풀이가 더 강력해서?

최근에 모 회사의 코드를 보고 있는데 거기에 JNDI 에 대한 내용이 있습니다.

보통 WAS에서 DB접속은 new InitialContext()를 해서 JNDI(란 네이밍 서비스
입니다. 자원에 대한 이름과 자원의 위치에 대한 pair 만들기 서비스)를
얻고, 여기서 DataSource를 얻어옵니다.

그런데 문제는 이 때 InitialContext를 new하는 작업과 거기서 DataSource를
얻는게 시간이 오래걸립니다. 그래서 보통은 DataSource까지는 캐싱해놓죠.
대략 다음과 같이…


class FooBar {
   static DataSource sDataSource;

   public FooBar() {
      if (sDataSource == null) {
         ... // get a data source here
      }
      return sDataSource;
   }
}

하지만 이 코드는 멀티 프로세서에서 코더의 의도대로는 동작하지 않죠.

결과적으로 싱글톤에 대한 이슈는 이런 것 같습니다.
1) 우리는 싱글톤으로 생각하는데 더 익숙하다.
2) 싱글톤은 잘 코딩하기 어렵고,
3) 상속도 어렵다.

하지만 국내 웹사이트만 다니면서 ‘도무지 발전이 없어’라고 투덜거리는건
내 잘못이긴 하네요..

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *