디스패치 테이블
Dispatch table컴퓨터 과학에서, 디스패치 테이블은 기능이나 방법에 대한 포인터나 메모리 주소의 표다.[1]이러한 표의 사용은 객체 지향 프로그래밍에서 늦은 바인딩을 구현할 때 일반적인 기법이다.
펄 구현
다음은 해시를 사용하여 코드(함수 포인터라고도 함)에 대한 참조를 저장하는 Perl에서 디스패치 테이블을 구현하는 한 가지 방법을 보여준다.
# 익명 코드-ref 1개 및 코드-ref 1개를 사용하여 테이블 정의 나의 %dispatch = ( "-h" => 후보선수 { 돌아오다 "안녕\n"; }, "-g" => \&say_says ); 후보선수 say_says { 돌아오다 "goodbye\n"; } # 테이블에서 코드 ref를 가져와 호출 나의 $sub = 달러화{$ARGV[0]}; 인쇄하다 $sub ? $sub->() : "논쟁\n";
다음 이름으로 이 Perl 프로그램 실행perl greet -h
'헬로'를 제작하고 '로 운영'할 것이다.perl greet -g
"수치"를 생산하게 될 것이다.
자바스크립트 구현
다음은 자바스크립트에서 디스패치 테이블을 구현하는 데모를 보여준다.
시합을 하다 WeCanDo. = { doThisThing : 기능을 하다() { /* 행동 */ }, 더싱 : 기능을 하다() { /* 행동 */ }, doThisOtherThing : 기능을 하다() { /* 행동 */ }, 체납 : 기능을 하다() { /* 행동 */ } }; 시합을 하다 어떻게 좀 해봐. = 기능을 하다(뭘 해) { 시합을 하다 팅투도 = WeCanDo..hasOwnProperty(뭘 해) ? 뭘 해 : "기본값" WeCanDo.[팅투도](); }
가상 메서드 테이블
가상 방법을 지원하는 객체 지향 프로그래밍 언어에서 컴파일러는 가상 방법을 포함하는 클래스의 각 객체에 대해 디스패치 테이블을 자동으로 생성한다.이 테이블을 가상 메서드 테이블 또는 vtable이라고 하며, 가상 메서드에 대한 모든 호출은 vtable을 통해 전송된다.
참고 항목
참조
- ^ Goldfuss, Alice. "Function Dispatch Tables in C". alicegoldfuss.com. Retrieved 23 January 2021.
- 디오미디스 스피넬리스(2003년).코드 판독값: 오픈 소스 관점.보스턴, 애디슨 웨슬리ISBN 0-201-79940-5