블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2797)
Unity3D (853)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (61)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

Singleton

Programming/C# / 2010. 7. 2. 16:53

Definition

Ensure a class has only one instance and provide a global point of access to it. 

클래스는 오직 하나의 인스턴스만을 가질 수 있으며, 인스턴스에 접근할 수 있는 하나의 글로벌 포인터를 제공한다.

 

 UML Class Diagram

 

Participants

The classes and/or objects participating in this pattern are: Singleton   (LoadBalancer)

  • defines an Instance operation that lets clients access its unique instance. Instance is a class operation.
  • responsible for creating and maintaining its own unique instance.

이러한 패턴으로 클래스들과 객체들이 참여하는것을 싱글톤(Singleton)이라 한다.

  • 클라이언트들이 유일한 인스턴에 접근하는 하나의 인스턴스 연산을 정의한다. 인스턴스는 클래스 연산(Operation)이다.
  • 자신의 유일한 인스턴스를 생성하고 유지하는 것에 대해 신뢰할 수 있다.

 

< 글/ 이미지지/ C# 소스 출처 : http://www.dofactory.com/ >

 

Example

Singleton 패턴은 객체의 인스턴스가 유일한 즉, 단 하나의 인스턴스만을 생성한다. 그리고 전연 변수와 같이 어디서든지 유일한 인스턴스에 접근하여 사용하는 패턴이다. 단 하나의 유일한 인스턴스만을 가지고 있어 중요한 자원을 관리하는 객체의 경우 편리하다.

사실 그냥 전역 변수를 사용해서 관리하는 것도 좋지 않나 라고 생각도 했지만, 전역 변수를 사용하는 목적이 어디에서든 접근 가능하다는 목적도 있는 반면에 중요한 자원을 관리함에있어 인스턴스를 이용하여 자원을 관리를 한다. 그래서 그 인스턴스가 유일하다는 것을 보장해 줄 때 사용할 수 있다. 다른 예로, 실생활에서는 대통령은 하나이며 그 유일한 대통령에 의해 임무가 수행된다. 하지만, 대통령 즉, 인스턴스가 여러군대 생성된다면 이것은 혼란을 야기시킬것이다. 이러한 문제를 미리 방지 하고자 Singleton을 사용한다.

 

Singleton은 기본적으로 다음과 같은 구조로 되어있다.

  1. public class Singleton
    {
         private static Singleton singleton;
         private Singleton()
         {         
         }
  2.  
  3.      public static Singleton getInstance()
         {
  4.  if(Singleton == null)
  5. singleton = new Singleton();
  6.           return singleton;
         }
    }

 

위 코드에서 생성자를 보자. public이 아닌 private 로 선언되었다.  보통 Singleton ex = new Singleton() 으로 인스턴스로 생성하지만, 이렇게 여러 곳에서 인스턴스가 생성되는 것을 막기 위해 private 로 선언되었다.

그래서 다음과 같이 이 인스턴스를 사용할 수 있다.

  1. Singleton ex = Singleton.GetInstance();

 

Sample Code In C#, C++Singleton.zip <- Click Here


출처 : http://blog.naver.com/fish19?Redirect=Log&logNo=120051709260

반응형

'Programming > C#' 카테고리의 다른 글

Windows Forms FAQ - Windows Forms  (0) 2010.07.02
C# 싱글톤  (0) 2010.07.02
창크기 조절 막기  (0) 2010.07.02
파일 드래그&드롭  (1) 2010.06.30
Form-Form 데이터 전달  (0) 2010.06.29
Posted by blueasa
, |