インピーダンスミスマッチを抑える実装方法について触れてきました。
ここではインピーダンスミスマッチが酷くなってしまう原因について見ていきましょう。
「データベースとオブジェクト指向プログラミングの間のギャップのこと」と前述しました。
しかしこれが正しい表現だとは考えていません。
何故ギャップが発生しているのかがよくわからず、誤解を招く表現だと感じています。
改めて定義しなおしてみましょう。
インピーダンスミスマッチとは、ドメインモデルとデータモデルの依存関係の違いのこと。
依存関係の違いとは何なのか、見てみましょう。
車とタイヤについて考えます。
flowchart TB
車
タイヤ
車--> タイヤ
このモデルは次のことを表現しています。
「車はタイヤが無ければ存在できない」
タイヤが無ければ車は走ることができません。つまり、この依存関係は正しいと言えそうです。
では、次の例ではどうでしょうか。
flowchart BT
車
タイヤ
タイヤ--> 車
サンプル1とは依存関係が逆になっています。
「タイヤは車が無ければ存在できない」