객체를 생성할때 하나만 생성하게끔 막는 방법은 없나요?


객체를 생성할때 하나만 생성하게끔 막는 방법은 없나요? 예를 들어서 세상에 저라는 사람은 딱 한명이잖아요. 그래서 저를 인스턴스화 시킨다면 딱 한명이니까 두개 이상 객체화를 못시키게 막고싶은데 어떻게 할 수 있을까요?

  • 2016년 02월 02일에 작성됨

조회수 312


1 답변


좋아요
1
싫어요
채택취소하기

싱글톤 패턴을 활용하시면 됩니다. 싱글톤(singleton)이란 하나의 인스턴스만 생성되는 클래스입니다. 구현 방법은 생성자를 private으로 하고 인스턴스에 접근할 수 있게 멤버들을 public static으로 제공합니다. 예를 들어

public class Elvis{
    public static final Elvis INSTANCE = new Elvis();
    private Elvis(){....}

    public void leaveTheBuilding(){....}
}

이런 식으로 private 생성자는 딱 한번만 호출되어 public static final필드인 Elvis.INSTANCE를 초기화한다. public 이나 protected 생성자가 없으므로, 한 명의 엘비스만 존재하는 세계를 보장합니다.

두 번째 방법으로는 static 팩토리 메소드를 public 멤버로 두는 건데요.

public class Elvis{
    private static final Elvis INSTANCE = new Elvis();
    private Elvis(){....}
    public static Elvis getInstance(){ return INSTANCE;}

    public void leaveTheBuilding(){....}
}

이런 식으로 몇번 호출되든 Elvis.getInstance에서는 항상 같은 객체를 반환하고 또다른 Elvis는 절대 생성되지 않습니다.

  • 2016년 02월 02일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close