QnA
사용언어
(칠해주세요) => (C#,VB) |
사용툴 (VS) : 2012,2013 |
운영체제 (OS) : Win7 |
상세언어(칠해주세요.)
=> 1) ASP.NET, 2) ASP.NET MVC, 3) ASP.NET AJAX |
요즘 싱글톤 패턴을 쓸일이 있어서 보고있는데, 몇가지 의문점이 생기네요
1. 싱글톤 패턴을 웹에 적용시 Thread safe 보장 or 점유 부분에 의문
Thread safe 보장을 하려면, 오리지널 패턴으로 하면 안되고
(1) Static 객체를 생성시켜놓고 반환만 한다
(2) 클로저 개념으로 내부 클래스를 생성해 최초 접근을 구분한다
(3) 기타 다른 방법을 강구한다
정도네요 여기서 의문이... 객체를 생성시켜놓을 필요가 있을지. 그리고, 생성시키는건 좋은데 해제가 안된다는것도 괜찮은지 자꾸 내면의 갈등이 생깁니다.
2. 객체를 생성해도 스택에 메서드가 올라가고 참조만 힙으로 넘어갈텐데, 이걸 굳이 싱글톤으로 해야 되나 의문
싱글톤으로 구현하려면 thread safe 때문에 멤버변수는 쓰질 말아야 하더군요.
대부분 싱크로 걸바에 걍 메서드 파라미터로 다 넘겨버립니다
근데 파라미터라는 녀석들이 싱글톤이 아닐바에... 잇점을 딱히 떠올릴수 없네요.
의문 주제글로 썼듯이 객체를 생성해도 스택에 메서드가 올라가고 참조만 힙으로 넘어갈텐데, 이걸 굳이 싱글톤으로 해야 되나 의문이 들고요..
3. 싱글톤에 대한 맹신(?) 의문
싱글톤에 대해 엄청난 맹신(?)이 있네요.
이걸 꼭 써야 제대로 된 구조(?)이다?? 저는 솔직히 파라미터가 넘어간다면, 싱글톤은 다시한번 고민해볼거 같은데 말이죠.
싱글톤이란게 주는 장점은 하나의 객체를 보장해서 메모리를 효율화 한다는건데 파라미터까지 모두 보장되지 않는다면, 사실상 의미가 퇴색된다고 생각합니다.
4. 싱글톤과 테스트에 대한 의문
싱글톤패턴을 제대로 구현해야 한다면, 3번에서도 썼지만 파라미터까지 싱글톤으로 써야 한다고 생각합니다.
위 생각하에... 테스트 기반 프로그래밍에 문제가 생깁니다. 물론 안되는건 아닌데 이건 본말이 전도된다고 생각되서요..
이외에도 머릿속으로 정리되지 않은 의문이 빙글빙글 돌아서 질문을 올립니다.
제가 쓴 의문점과 싱글톤 패턴에 대한 고견을 듣고 싶습니다.
첫댓글 음...
DB로 던져버리는건 어떠신가요?? 파일이나...
무슨말씀이신지요? 좀 풀어서 써주시면 감사하겠습니다.
싱글톤 객체가 프로그램 내에서 유일객체를 위해 존재하는 객체니까요 여기에 프로퍼티를 DB에 만들어서
DB에 데이타를 읽고 쓰고를 하시면 어떨까 해서요.
단 프로그램이 뜰때마다 일정규칙에 맞는 ID를 만드신다거나 웹이시면 세션ID를 활용하신다면 어떨까 해서요.
그렇게 생각해볼수 있겠네요 말씀 감사합니다.
http://www.yoda.arachsys.com/csharp/singleton.html
여기저기 돌아다니다 보니 블로그링크 타고 다녀보다가 이런게 있었네요.
윗글의 내용은 저도 다른곳에서 보고 알고 있습니다.
시간이 좀 지나서 저도 이 질문은 나름 정리가 된 상태입니다.
사실 제 의문의 시작은 윗분의 강제에서 시작된거라서요 이런 기술적인 해답과 더불어 인지적인 해답도 필요했습니다. ㅎㅎㅎ
무조건 모든 클래스의 인스턴스를 싱글톤 처리해라! 하고 강제된 상황이 어이 없기도 하고, 예전부터 싱글톤에 대해 기술적 의문도 있던 상황이었거든요. 싱글톤이란게 좋은 패턴이긴 한데, 쓸곳 안쓸곳 다쓰는 그런녀석은 아니라고 생각하고 스스로는 맺음했습니다.
늦은 시일까지 기억해주시고 이렇게 정보 달아 주셔서 감사합니다.