상위 질문
타임라인
채팅
관점

디스패치 테이블

위키백과, 무료 백과사전

Remove ads

컴퓨터 과학에서 디스패치 테이블 (Dispatch table)은 메서드들을 가리키는 포인터들이나 메소드들의 테이블이다. 이런 테이블을 사용하는 것은 객체 지향 프로그래밍에서 늦은 바인딩을 구현하는 기본적인 기술이다.

펄 (Perl) 구현

아래는 을 통해 디스패치 테이블을 구현하였다. 

 #define the table using one anonymous code-ref and one named code-ref
 my %dispatch = (
   "-h" => sub {  return "hello\n"; },
   "-g" => \&say_goodbye
 );

 sub say_goodbye {
   return "goodbye\n";
 }

 #fetch the code ref from the table, and invoke it
 my $sub = $dispatch{$ARGV[0]};
 print $sub ? $sub->() : "unknown argument\n";

이 Perl 프로그램을 perl greet -h 명령어로 돌리면 "hello"를 보여주고, perl greet -g 명령어는 "goodbye"를 보여준다.

Remove ads

자바스크립트 구현

아래는 자바스크립트로 구현한 디스패치 테이블이다.

var thingsWeCanDo = {
    doThisThing      : function() { /* behavior */ },
    doThatThing      : function() { /* behavior */ },
    doThisOtherThing : function() { /* behavior */ },
    default          : function() { /* behavior */ }
};

var doSomething = function(doWhat) {
    var thingToDo = thingsWeCanDo.hasOwnProperty(doWhat) ? doWhat : "default"
    thingsWeCanDo[thingToDo]();
}
Remove ads

가상 메소드 테이블

가상 메소드를 지원하는 객체 지향 프로그래밍 언어에서 컴파일러는 자동으로 가상 메서드를 포함하는 클래스의 각 객체마다 디스패치 테이블을 생성한다. 이 테이블은 가상 메소드 테이블(또는 vtable)이라고 불리며, 모든 가상 메서드는 이 vtable을 통해 보내진다.

같이 보기

각주

  • Diomidis Spinellis (2003). Code Reading: The Open Source Perspective. Boston, MA: Addison-Wesley. ISBN 0-201-79940-5
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads