15
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

マンガでわかる Mediator

86248074-7B82-4F4B-9E30-A39EC379BBB3.png

こみっとさん、なんかすごい上司っぽいぞ! かっこいい!! みなさん忘年会が立て込むシーズンなので、めもりーちゃんみたいに、財布にゆきちしかいないなんてことないように、気をつけましょうね。

忘年会の会費を社員間で貸し借りするといった、複数のオブジェクトによる好き勝手複雑な連携は、あっという間にプログラムを混沌に陥れます。参照透過な純粋関数でない場合が多いオブジェクト指向のプログラムだと、最悪、メソッドコールが循環して、無限に再帰する可能性も...

Mediator はそんな状況を解消するのに最適なオブジェクトです。個々のオブジェクトは、この調停者オブジェクトとしか、忘年会費の支払い取引をしてはいけないことにします。そうすると、関係グラフの線の最大本数が、(n - 1)^2 から、一気に n - 1 に減ります。

n = 2 のときは 1 本しかないからいいけど、それ以上になると、これ、爆発的に関係が複雑になりますね。この開発チームだと関係者が 5 人なので、最大 16 本から確定で 4 本ですよ! やったね!!

もしもこれが 20 人なら 361 -> 19 に、100 人なら 9801 -> 99 ... うーん、それ以上は考えたくありません。^2 なのでぐいぐいやばくなります。

たった一人で収支計算しないといけない Mediator は、あらゆる調停に関係する知識が入ってくるので、そこだけはどうしても複雑になります。が、おかげで他のオブジェクトはいっさいの計算をしなくてよくなります。どうせ必要最低限の複雑さが必要なら、そりゃ分散しているより集中している方が、圧倒的に問題を認識しやすくなりますよね。もしバグっても、ひとつのクラスの単体テストを書いて修正するだけなので簡単です。(なんせ複数のクラスの関係に潜む不具合は、単体テストでは発見しにくいですからね)

ちなみに、経口摂取したアミノ酸を分解できるすごいハイテク義体の持ち主なのにアルコールだけ NG で飲めないうえ、インターンだから正社員待遇されてない AI のくるみクンのぶんは、内緒でこみっとさんが奢ってくれました。そういうイレギュラー調整も独断ででできて、他の子にバレないってとこも Mediator のメリットですね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
15
Help us understand the problem. What are the problem?