해당 분류 : 자바에 대한 이야기    getInstance()는 무엇인가? GameServer에서 알아보자.    글을 기록한 날 : 2011/04/06 22:36

아래는 GameServer 클래스에서 getInstance()를 검색한 내용입니다.

여기에서 보면 getInstance()라는 메소드가
총 36번 사용되었습니다. 도대체 이것이 무엇인데 이렇게 많이 사용되고
대부분의 서비스 또는 컨트롤 클래스들의 getInstance()메소드를 일일히 다 불러오는것인가?
여기서 자바의 특징! 자바 하면 항상 처음 듣는 객체지향언어 라는 말로 표현이 가능합니다.

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

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

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

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

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

이래도 모르겠다면 다음에 데이터관리시스템을 포스팅할때까지 기다려주길 바랍니다.

XEMU_GameServer_KOR\src\gameserver\GameServer.java (36 matches)
123: DataManager.getInstance(); 
124: IDFactory.getInstance(); 
125: World.getInstance(); 
132: SpawnEngine.getInstance(); 
135: QuestEngine.getInstance(); 
136: QuestEngine.getInstance().load(); 
139: PacketBroadcaster.getInstance(); 
141: GameTimeService.getInstance(); 
143: AnnouncementService.getInstance(); 
145: DebugService.getInstance(); 
147: ZoneService.getInstance(); 
149: WeatherService.getInstance(); 
151: DuelService.getInstance(); 
153: MailService.getInstance(); 
155: GroupService.getInstance(); 
157: AllianceService.getInstance(); 
159: BrokerService.getInstance(); 
161: SiegeService.getInstance(); 
163: Influence.getInstance(); 
165: DropService.getInstance(); 
167: ExchangeService.getInstance(); 
169: PeriodicSaveService.getInstance(); 
171: PetitionService.getInstance(); 
173: NpcShoutsService.getInstance(); 
175: ShieldService.getInstance(); 
177: FlyRingService.getInstance(); 
179: LanguageHandler.getInstance(); 
181: ChatHandlers.getInstance(); 
183: HTMLCache.getInstance(); 
185: AbyssRankingService.getInstance(); 
187: RentalService.getInstance(); 
207: Runtime.getRuntime().addShutdownHook(ShutdownHook.getInstance()); 
250: NioServer nioServer = new NioServer(NetworkConfig.NIO_READ_THREADS + NetworkConfig.NIO_WRITE_THREADS, ThreadPoolManager.getInstance(), aion); 
253: LoginServer loginServer = LoginServer.getInstance(); 
254: ChatServer chatServer = ChatServer.getInstance(); 
299: ThreadPoolManager.getInstance(); 
Creative Commons License
Creative Commons License

트랙백 주소 : http://www.barahime.org/trackback/6

  1. Subject : travail à domicile

    Tracked from travail à domicile / 2014/09/01 00:14  삭제

    아이온으로 풀어보는 자바이야기 ::

  2. Subject : travaille a domicile enveloppe

    Tracked from travaille a domicile enveloppe / 2014/09/04 18:11  삭제

    아이온으로 풀어보는 자바이야기 ::

  3. Subject : China and Hong Kong are detailed at Wikipedia

    Tracked from China and Hong Kong are detailed at Wikipedia / 2014/09/15 21:55  삭제

    아이온으로 풀어보는 자바이야기 ::

  4. Subject : Used ATM Machines

    Tracked from Used ATM Machines / 2014/09/19 03:29  삭제

    아이온으로 풀어보는 자바이야기 ::

Notice

Blogroll

Counter

· Total
: 274196
· Today
: 6
· Yesterday
: 30