싱글톤 패턴(Singleton )

HEP·2023년 1월 6일
0

OOP & Design Pattern

목록 보기
1/5
public with sharing class SingleObj {
	// 하나의 인스턴스 생성을 위해 pivate으로 선언 
    private static SingleObj singleObj = null;

    // 외부 접근 제한을 위해 생성자를 private으로 선언
    private SingleObj(){ }

    // 외부접근은 getInstance를 이용해 오직 1개의 객체만 생성
    public static SingleObj getInstance(){
        if( singleObj == null ){
            singleObj = new SingleObj();
        }

        return singleObj;
    }
}

싱글톤

  • 하나의 인스턴스만을 생성해 클라이언트에게 동일한 인스턴스를 반환하는 작업을 수행한다.

장점

  • 한개의 인스턴스만을 사용하기 때문에 메모리 낭비를 방지할 수 있다.
  • 속도가 빠르다

단점

  • 멀티스레드 환경에서는 여러개의 instance를 생성할 수 있음
    -> 해결방법 : private static SingleObj singleObj = new SingleObj();
  • 또한, 멀티스레드의 경우 값이 일관되지 않을 수 있다.

고려할 사항

  • 인스턴스가 한 개만 존재해야 하는가?
  • 동시성 문제가 발생하지 않는가?
profile
셀포합니다

0개의 댓글