빌 로퍼

book 2012/03/12 21:56

FxCam_1331525891099

(빌 로퍼는 스타크레프트, 워크레프트, 디아블로 등을 개발한 스타 개발자이다.)

어려운 환경을 이겨내고 성공하는 스토리는 언제나 재밌다.

'book' 카테고리의 다른 글

빌 로퍼  (0) 2012/03/12
Begginning Android Games-안드로이드 게임 개발서  (0) 2011/06/24
3D in Flash 도착  (4) 2010/07/12
켄트 벡의 구현패턴  (0) 2010/06/26
Posted by 웹눈

  저는 같은 카테고리에 속하는 다양한 Device들의 인터페이스를 일반화 하고 생성 함수를 만들어서 클라이언트 코드가 특정 구현객체에 의존하지 않을 수 있도록 하기 위해 Factory Pattern을 사용합니다. 주로 사용성은 아래와 같습니다.

 

   1:  //Radiometer 카테고리의 디바이스.
   2:   
   3:  DevRadiometer* radiometer = DevRadiometerCreator::Instance().Create( “K6485” );
   4:   
   5:  DevRadiometer* radiometerEmul = DevRadiometerCreator:Instance().Create( “emulator” );
   6:   
   7:   
   8:   
   9:  //Thermometer 카테고리의 디바이스.
  10:   
  11:  DevThermometer* thermometer = DevThermometerCreator::Instance().Create( “pk2000” );
  12:   
  13:  DevThermometer* themometerEmul = DevThermometerCreator::Instance().Create( “emulator” );
  14:   

  위와 같이 Device 종류 별로 Factory 클래스를 만들어서 사용을 해 왔었는데요. 각각의 Factory 클래스 마다 반환하는 특정 클래스를 제외하면 구현 내용은 중복이 되었습니다. 이러한 중복을 제거하기 위해서 Template을 사용하여 Factory 자체를 일반화 하는 것을 구상해 보았습니다. 사용성은 아래와 같습니다.

   1:  DevRadiometer* radiometer = Factory<DevRadiometer>::Instance().Create( “K6480” );
   2:   
   3:  DevRadiometer* radiometerEmul = Factory<DevRadiometer>::Instance().Create( “emulator” );
   4:   
   5:   
   6:   
   7:  DevThermometer* thermometer = Factory<DevThermometer>::Instance().Create( “pk2000” );
   8:   
   9:  DevThermometer* thermometerEmul = Factory<DevThermometer>::Instance().Create( “emulator” );
  10:   
  위와 같이 Factory Template 클래스를 한번 구현해 놓으니 수정이나 기타 구현이 필요 없이 재사용이 가능한 것 같습니다. 구현 코드는 파일로 첨부 하였습니다.

Posted by 웹눈

  이곳에 가시면 Verlet Inegration의 구현에 대해 매우 상세히 설명되어 있는 글을 보실 수 있습니다. 설명되어 있는 예제가 html5의 Canvas를 이용하였기 때문에, 크롬 브라우저나 파이어폭스 혹은 익스 9 버전으로 확인 하셔야 합니다.


위의 예제는 Verlet Integration을 이용하여 구현해본 것입니다.  전에 Euler Integration을 사용하여 비슷한걸 구현해 본적이 있는데요. Verlet Integration을 이용하면 놀라울 정도로 간단히 구현할 수 있습니다.

Posted by 웹눈