일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 경기도 버스
- DrawEllipse
- DrawRectangle
- eventhandler
- sqlite3
- WPF
- Cell Border Style
- C# MDB
- Json.NET
- solid
- 객체지향
- c#
- 버스 API
- Excel Cell Format
- NUnit
- MDB Select
- TDD
- C# 파일 암/복호화
- eventargs
- Winform
- C# MDB Handle
- delegate
- 시
- MVC
- 경기도 버스정보시스템
- 공공 데이터 포털
- GDI+
- JSON
- 디자인 패턴
- MDB Connect
Archives
- Today
- Total
White Whale Studio
Singleton Pattern / 싱글톤 패턴 본문
반응형
싱글톤 패턴은 하나의 Class 에 하나의 Instance를 가지는 패턴입니다.
개인적으로 가장 이해하기 쉬웠던 예는 TraceManager의 예제였습니다.
에러나 프로세스 정보를 기록하기위해서 사용하는 TraceManager는 다양한 클래스에서 참조할 것이고 참조할 때마다 객체를 생성해서 사용
해야만 한다면 분명히 자원을 많이 잡아먹게 될것입니다.
이러한 경우에 TraceManager를 구현 시에 싱글톤 패턴으로 구현을 하면 될것 같군요.
구현 후에는 프로그램 구동 후 종료가 될때까지 TraceManager의 1개의 인스턴스로 로깅을 남길 수 있습니다.
객체 중에서 하나 이상 존재하게 되는 경우 프로그램에 문제가 될수있다거나 자원을 많이 잡아먹을 가능성이 있는 다른 예를 들어보면, 대화상자나 사용자 설정, 레지스트리 설정 처리 등등이 있겠습니다.
특징을 살펴보면
1. 하나의 Class 에 하나의 Instance를 가진다.
2. 다른 클래스에서 해당 객체를 생성할 수 없다. 생성자가 private
3. 어디서든지 접근이 가능하다. => 정적 메서드로 Instance를 Get할 수 있도록 정의합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class Singleton { private static Singleton singleInstance; private Singleton() { } public static Singleton GetInstance() { if (singleInstance == null) { singleInstance = new Singleton(); } return singleInstance; } public void DoSomething() { Console.WriteLine("tt"); } } | cs |
전통적인 싱글톤의 형태는 위와 같습니다만, 위와같은 코드는 멀티쓰레드환경에서 Singleton 객체가 2개가 생성될 수도 있습니다.
이를 막기위한 방법으로는 Instance를 처음부터 만드는 방법과 DCL(Double Checked Locking)방법을 쓰는 방법이 있습니다.
반응형
'IT Engineering > 객체지향&디자인 패턴' 카테고리의 다른 글
[SOLID] 개방 폐쇄 원칙 / OCP : Open Close Principle (0) | 2016.06.24 |
---|---|
[SOLID] 단일책임원칙 / SRP : Single Responsibility Priciple (0) | 2016.06.24 |
Facade Pattern (파사드 패턴) (0) | 2016.06.17 |
Decorator Pattern (데코레이터 패턴) (0) | 2016.06.17 |
[객체지향 개발] 캡슐화(Capsulation) (0) | 2016.06.16 |
Comments