getInstance() 란 무엇인가

개발/실전 2014. 6. 18. 16:09

new()와 getInstance()의 차이

new()            : 객체를 계속계속 만들 수 있다.

getInstance()  : 싱글턴패턴, 하나의 인스턴스만 가지고 공유해서 쓴다.

 

싱글턴패턴

: 생성자를 private로 선언하여 다른클래스에서 해당 클래스의 인스턴스를 

new로 생성하지 못하게 하고, getInstance()함수를 통해서 인스턴스를 갖도록 한다.

 

자바는 클래스들로 이루어져 있고, 매번 새로운 객체를 생성합니다.
하지만 매번 새로운 객체를 생성하는 것이 아닌
한번만 새로운 객체를 생성하고 그후에는
모든 클래스들이 동일한 객체(인스턴스)를 써야 하는 경우가 생긴다면 어떻게
할것인가에 대한 해답이 위에 나온 getInstance()라는 메소드입니다.

프로그래밍 디자인 패턴중 하나인 싱글턴 패턴이라는 것 입니다.

하지만 그렇게 자세히 알면 짜증나고 머릿속에도 안들어옵니다.
그냥 간단하게 여러분들이 알고 있는 아이온으로 설명하겠습니다.

아래 소스에서 보면 제일 처음 만나는 getInstance()는 DataManager.getInstance();입니다.
이걸 예들 들어 설명하자면
아이온을 하는데 플레이어는 각각 다른 객체로 생성됩니다.
하지만 그 플레이어들이 사용하는 데이터정보는 항상 같이야 합니다.
부활지점정보,큐브확장,비행가능지역,비행고리,채집물,상점들,아이템정보,몬스터정보 등
많은 데이터들은 모든 플레이어들에게 같은 것을 보여주어야 합니다.
그럴때 쓰는게 인스턴스화이다. 이 데이터관리 클래스인 DataManager 클래스를
인스턴스화 한 객체로 만들면 모든 다른 객체들이 참조해서 사용할때
동일한 값 또는 메소드를 동일한 조건으로 사용할 수 있게 됩니다.

GameServer클래스에서 처음에 getInstance()를 한것은 해당 객체를 인스턴스화해서
생성하기 위함이며 다른 서비스나 컨트롤에서 해당 인스턴스화된 객체를 사용하려면
getInstance().메소드() 식으로 사용할 수 있습니다.

'개발 > 실전' 카테고리의 다른 글

checkbox 사용  (0) 2014.10.29
오라클 long 타입 insert  (0) 2014.08.28
현재시간함수  (0) 2014.06.05
executeQuery, executeUpdate  (0) 2014.06.03
원하는 순서 문자 변경  (0) 2014.04.18