up:: Unreal_Engine
up:: インターフェース
source:: 【UE4】InterfaceとDispatcherの使い分け方-自分流【★★☆】 | キンアジのブログ
source:: ブループリント インターフェースの実装 | Unreal Engine ドキュメント
source:: イベント ディスパッチャー | Unreal Engine ドキュメント
source:: UE4 ブループリントでイベントディスパッチャーを使う - Let’s Enjoy Unreal Engine

Interface

あくまでオブジェクト指向のInterfaceと同じく、モノの見方を変える眼鏡かつタグ。中身的には眼鏡側がモノに見方を強制している(そのため特定のモノにしか使えない、この性質を逆利用するとタグになる)のだが、使う側からしたら前述の眼鏡でタグになる。

なので、Blueprint内でもまず見るモノを指定しないと動かない。Dispatcherとの大きな違い。

呼出し元の処理呼出しを受けて処理側が呼び出し元がかけた眼鏡から見える範囲内で決まった処理を行う。呼び出し側から見れば変なことはしてない(ただし眼鏡は結果しか出力しないので、実際何が起きてるかは知らない)ので安心。

人間に例えると、書類しか見ないタイプの上司の指示に、過程はどうあれ仕事をこなす部下が結果だけ返してる感じ。

Dispatcher

発信源。信号タイプはDispatcherしかないので、受信側は加えてそれがどこからの信号なのかという情報もキャッチして信号をより分けられるアンテナを張る必要がある。

あらかじめどの発信源からの信号を受信するか決めておく必要がある。

発信側からは処理しましたよ、という情報(といくつかの引数)しか送られず、受信側がそれをトリガーに何をするのかは発信側は知らない。

発信側の通知を受信側が好き勝手使ってるイメージ。

人間に例えると、有名人が本を読んでレビューした動画を見て、自分も本を読み始める感じ。

総評

こう並べるとInterfaceが悪みたいだが、上意下達で仕事すると間違いなく効率はいい。
どういうことかというと、眼鏡であるため、眼鏡で見える相手全てに同じ扱いが出来る。個人にフォーカスする必要が無いため、「あいつがいないから仕事できない」みたいなこと(依存)にはなりにくい。だって眼鏡で見えてる奴なら誰でもいいし。

反対に、Dispatcherは属人的。発信側からすれば不特定多数だが、受信側は特定の相手に対してアンテナを張っているやつのみが動く。たとえ受信側が双子で同じ能力を持っている=同じクラスから生まれたインスタンスだったとしても、そいつがアンテナを持っていなければ意味が無い。

もう一度イメージ化すると、

見るべきところだけ見て必ず出来る仕事を割り振る上司と、
出来る出来ないにかかわらず行動を起こすトリガーを振りまく有名人。

ちなみに、これに限らないが、実際にどう実装すれば機能が使えるのか? に関しては、公式ドキュメント読むのが一番早い。