はじめに
現在Clean Architecture
という本を読んでいるのですが、備忘録の意味合いも兼ねてまとめてみたいと思います。
今回はオブジェクト指向プログラミングについてみていきます。
オブジェクト指向とは?
オブジェクト指向とは「ポリモーフィズムを使用することで、システムにあるすべてのソースコードの依存関係を絶対的に制御する能力」である。
よくオブジェクト指向の性質を「カプセル化」・「継承」・「ポリモーフィズム」と表現されるが、これらは以前から実現・利用されていたものでありオブジェクト指向言語の固有の特徴ではない。
ただし「ポリモーフィズム」に関してはオブジェクト指向言語によって安全かつ便利にしてくれた。オブジェクト指向によってプラグインアーキテクチャを容易に利用できるのだ。
依存関係逆転
ポリモーフィズムを活用することで、依存関係逆転をすることができる。
モジュールHL1
がモジュールML1
のF()
関数を呼び出すが、その依存関係を制御の流れと逆転させている。
このようにオブジェクト指向言語が安全・便利なポリモーフィズムを提供していることにより、ソースコードの依存関係はどこであっても逆転させることができる。
つまりソースコードの依存関係の方向は制御の流れに合わせる必要はなく、制御することが可能であることを意味する。
個人的な感想
この書籍のオブジェクト指向の説明はなるほどなと思いました。
私はコーディングをする上でどちらが利用する側・利用される側をよく意識しますが、ポリモーフィズムによってその関係性を制御の流れに関係なく設定させることができます。
また利用する側に変更があったとしても、利用される側に変更する必要はなく再コンパイルの必要もありません。
ただ盲目的に「ポリモーフィズム最強!依存関係逆転!」のようになるのではなく、ちゃんと依存関係を見てどちらのモジュールがどちらのモジュールに依存すべきかを見るのが大切だと思います。
ではまた。