본문 바로가기

프로그래밍/디자인패턴

Singleton (싱글톤)

728x90
반응형

오직 단 하나의 인스턴스 객체만을 생성할 수 있게 강제하는 패턴이다.

보통 Manager Class가 싱글톤으로 구현된다.

(NetworkManager 라던지 객체가 하나 이상 있어서는 안되는 Class들)

사용 예시)

public Class NetworkManager

{

private NetworkManager();

private NetworkManager m_instance;

public NetworkManager Instance

{

get

{

if(m_instance== null)

m_instance = new NetworkManager();

return m_instance;

}

public void SendLogin()

{

// 로그인을 하기 위한 API를 호출한다고 치고...

}

}

public Class TestMain

{

public void Main()

{

NetworkManager.Instance.SendLogin();

}

}

대충 위와 같이 사용할 수 있다.

핵심은 private NetworkManager();

생성자를 private로 막음으로서 외부에서 객체를 못 만들게 하는 것이다.

추가로

현재 우리 프로젝트에서 싱글톤을 이상하게 쓰고 있어서 확인을 해봤다.

private 생성자가 없는 Singleton? Class가 있고 그 Class를 상속받는 Manager Class가 있다. (아마도 Instance를 얻는 구문을 각 Manager Class들마다 구현해주기 싫어서였겠지..)

근데 이것은 실제 Singleton이 아니다. 생성자가 private가 아니라서 new를 통해 객체 생성이 가능하다.

그렇다고 private 생성자를 만들면 상속받는 Manager Class들은 보호 수준으로 에러가 발생한다. 그리고 이 에러를 잡기 위해 protected로 바꾸면 원점으로 돌아온다. 외부에서 new가 가능해진다.

결론은 몇줄 안되니까 그냥 쓰길 바란다.

 

 

다람쥐와 포동포동이

 

RememberCook 9월 28일 정식 출시!

두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관��

chipmunk-plump-plump.tistory.com

반응형

'프로그래밍 > 디자인패턴' 카테고리의 다른 글

Strategy (스트레티지)  (0) 2020.04.09
FSM (유한 상태 머신)  (0) 2020.04.08
Factory (팩토리)  (0) 2020.04.08
Observer (옵저버)  (0) 2020.04.07
디자인패턴  (0) 2020.04.07