티스토리 뷰

반응형

🚀 스프링에서 디자인 패턴의 중요성

디자인 패턴은 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이
인정한 가장 효율적인 예시를 정리한 패턴의 집합이다.

🌠 싱글톤 패턴 - 개방 폐쇄 원칙(OCP), 의존 역전 원칙(DIP)

커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 경우 인스턴스를 여러개 만들게 되면 불필요한 자원을 사용하게 된다.

여기서 싱글톤 패턴을 적용하여 하나의 인스턴스를 만들어 사용하기 위한 패턴이다.

단일 객체를 사용하는 패턴인 만큼 의미상 두개의 객체가 존재할 수 없으며,
이를 구현하기 위한 new에 재역울 걸어야 하고, 만들어진 단일 객체를 반환할 수 있는 메서드가 필요하다.

  • new를 실핼할 수 없도록 생성자에 private 접근 제어자를 지정한다.
  • 유일한 단일 객체를 반환할 수 있는 정적 메서드가 필요하다.
  • 유일한 단일 객체를 참도할 정적 참조 변수가 필요하다.

007

싱글톤 패턴 - 적용 후

public class Singleton {
    static Singleton singletonObject; // 정적 참조 변수

    private Singleton() {
    }; // private 생성자

    // 객체 반환 정적 메서드
    public static Singleton getInstance() {
        if (singletonObject == null) {
            singletonObject = new Singleton();
        }

        return singletonObject;
    }
}

public class Client {
    public static void main(String[] args) {
        // private 생성자임으로 new 할 수 없다.
        // Singleton s = new Singleton();

        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        Singleton s3 = Singleton.getInstance();

        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);

        s1 = null;
        s2 = null;
        s3 = null;
    }
}

생성자를 private 으로 지정한 것으로 개발자는 new를 통해 객체를 생성할 수 없다.

🌠 정리

클래스의 인스턴스 객체를 하나만 만들어 사용하는 패턴

  • private 생성자를 갖는다.
  • 단일 객체 참조 변수를 정적 속성으로 갖는다.
  • 단일 객체 참조 변수가 참조하는 단일 객체를 반환하는 getInstance() 정적 메서드를 갖는다.
  • 단일 객체는 쓰기 가능한 속성을 갖지 않는 것이 정석이다.

🧾 Reference

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
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
글 보관함