41
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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 のメリットですね。

41
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?