2009. 2. 4. 14:21

[생성 패턴] 싱글톤(Singleton) 패턴

디자인 패턴에는 생성 패턴, 구조 패턴, 행위 패턴으로 나뉘며, 각 패턴마다 세부 패턴들로 다시 나눠진다.

싱글톤 패턴은 생성 패턴중의 하나로써 이름에서도 느낄수 있듯이 시스템에 해당 객체가 하나만 존재하도록 만드는 패턴이다. A라는 곳에서 변경한 객체내부의 데이터를 B라는 곳에서도 활용할수 있다.

싱글톤으로 만들고 싶은 클래스에 자기자신을 반환하는 메소드를 가지게 만든다. 그리고 사용자는 싱글톤 클래스를 이용하여 객체를 생성하는 것이 아니라, 싱글톤 클래스가 가진 메소드를 이용하여 객체를 얻는다.
싱글톤 메소드는 객체 내부에 하나의 객체만 만들어 둔 뒤, 이 객체를 반환해 주는 것이다.

싱글톤 클래스를 만드는 방법은 먼저 클래스 내부에 자기자신을 저장하는 static 멤버변수를 가지게 한다.

class Framework
    {
        private static Framework the_object;
                
        public static Framework get_object()
        {
            if (the_object == null)
            {
                the_object = new Framework();
            }
            return the_object;
        }
    }

싱글톤 객체를 반환하는 메소드를 사용하게 되면, 메소드는 제일 처음 한번만 객체를 생성하고  그 다음에는 이미 생성된 객체만 반환하는 작업을 하게 된다.

아랫 소스는 객체가 호출될 때마다 호출한 횟수를 출력할수 있다.

class Framework
    {
        private static Framework the_object;
        private string system_state;
        private static int num_invoke;

        public Framework()
        {
            the_object = this;
            num_invoke = 0;
            system_state = "대기";
        }

        public static Framework get_object()
        {
            if (the_object == null)
            {
                the_object = new Framework();
            }
            num_invoke++;
            Console.WriteLine("호출된 횟수 : " + num_invoke);
            return the_object;
        }
    }

책을 보면서 정리하고 소스도 돌려보고 하니깐 지금은 이해가 가는데 실전에서 쓸땐 과연... ㅋㅋㅋ

'Design Patterns' 카테고리의 다른 글

[생성 패턴] Simple Factory Pattern  (0) 2009.03.06