Function hook 테크닉 (템플릿 메소드 패턴)

Posted by epicdev Archive : 2012. 10. 8. 21:57

오늘은 Function hook 테크닉을 소개하고자 합니다.

테크닉의 명칭은 제가 그냥 이 테크닉을 알게된 코드의 주석에서 따온 거구요, 이 테크닉에 대한 정식 명칭이 있는지는 잘 모르겠습니다.

이 테크닉은 제가 JDK의 HashMap 코드를 보다가 접하게 되었습니다만 사실 예전부터 그냥 인지하지 못하고 가끔씩 사용하던 패턴이었고,

실제로 다른 분들도 많이 사용하시리라 생각합니다.


업데이트 (2013.03.20)

역시나 이 테크닉 또한 디자인 패턴이었군요. 템플릿 메소드 패턴이라고 불리는 디자인 패턴입니다.

자세한 내용은 아래의 링크를 참고하시길...

http://en.wikipedia.org/wiki/Template_method_pattern


우선 제가 접한 코드를 보도록 하겠습니다.



위의 코드에는 HashMap의 생성자들과 init이라는 함수가 있습니다.

init()은 HashMap의 생성자들의 맨 마지막에 호출이 되는 함수입니다.

그런데 이상하게도 init()의 body는 텅 비어있습니다.

텅 비어있는 함수를 왜 생성자 마지막에 호출하는 것일까요?


init()의 javadoc에는

Initialization hook for subclasses. This method is called in all constructors and pseudo-constructors

라고 적혀있습니다.


즉, 이 init()은 하위 클래스에서 추가적인 초기화 코드가 필요할 경우 init()을 오버라이드해서 사용할 수 있도록 미리 상위 클래스에서 만들어 놓은 함수입니다.

이렇게 하게되면 굳이 하위 클래스에서 모든 생성자를 override해서 초기화 코드를 넣지 않아도 됩니다.

그냥 간단하게 init()이라는 함수만 override해서 초기화코드를 넣으면 되는 것입니다.

이러한 function hook 테크닉은 초기화 코드 뿐만 아니라, 상속 후 기능 확장이 예상되는 부모클래스의 다양한 곳에서 사용 될 수 있습니다.


정리하자면, function hook 테크닉은 어떤 부모 클래스를 만들 때 하위 클래스에서 확장이 필요할 것 같은 부분을 부모 클래스를 설계 할 때 미리 파악해서

하위 클래스가 좀 더 수월하게 부모 클래스를 확장시킬 수 있도록 도와주는 테크닉이라고 할 수 있겠습니다.

'Archive' 카테고리의 다른 글

오픈소스 라이센스의 종류  (0) 2013.02.12
우분투 창 버튼 오른쪽으로 옮기기  (0) 2012.12.22
KAIST 셔틀 for Android  (0) 2012.09.15
Word Cloud 생성기  (0) 2012.09.08
SVN Branch & Merge 헷갈릴 때 참고할만한 글  (0) 2012.09.06
  

KAIST 셔틀 for Android

Posted by epicdev Archive : 2012. 9. 15. 16:35




KAIST의 기숙사 생들을 위한 셔틀버스 App입니다


https://play.google.com/store/apps/details?id=com.epicdevs.kaistshuttle



=====================================================================


카이스트 본원-문지-화암 간 셔틀 시간표 앱입니다.

위젯으로 간단하게 버스 시간을 체크할 수 있고

알람으로 버스 도착 시간을 미리 알려줍니다.


[주요 기능]

- 본원-문지-화암 간 셔틀 시간표 탑재

- 다음 배차까지 남은 시간 확인 가능

- 위젯을 통해서 간단하게 시간 확인 가능

- 다음 배차시간 알람 기능


[상세 기능]

기본적으로 이 앱은 위젯을 기반으로 동작합니다.

위젯은 3가지 버튼으로 구성되어 있으며, 왼쪽 버튼을 누르면 현재 설정된 출발지의 전체 시간표가 화면에 나타납니다. 가운데 버튼을 누르면 동기화가 작동하여, 실시간으로 남은 시간을 업데이트하게 됩니다. 위젯의 동기화가 작동 중인 경우 설정해 놓은 알람 시간에 맞추어 진동 알람 및 알림창이 뜨게 됩니다. 오른쪽 버튼을 누르면 현재 설정된 출발지에서 다른 출발지로 바뀌게 됩니다.

  

Word Cloud 생성기

Posted by epicdev Archive : 2012. 9. 8. 19:52

Wordle(http://www.wordle.net/)이 한글을 지원하지 않기 때문에, 한글 Word Cloud를 생성하기 위해서 재미삼아 만들어 보았습니다.

GitHub: https://github.com/epicdevs/Word-Cloud


몇시간만에 만든거라서 퀄리티는 그렇게 좋지 않지만, Word Cloud가 어떤식으로 만들어지는지는 파악할 수 있습니다.

Wordle혹은 일반적인 Word cloud를 생성하는 자세한 알고리즘을 알고 싶으시면

아래의 문서와 페이지를 참조하시길 바랍니다

http://static.mrfeinberg.com/bv_ch03.pdf

http://mathematica.stackexchange.com/questions/2334/how-to-create-word-clouds/2360#2360






  
 «이전 1 2 3 4 5 6 7 8 ··· 55  다음»