SOLID原則のざっくりまとめ:後編
前編↓
インターフェース分離の原則
インターフェース分離の原則とは、インターフェースを機能ごとに分けて、それぞれのクラスで使わない機能が無いようにすることです
例えば、酸素を吸う「呼吸メソッド」と、二酸化炭素を吸う「光合成メソッド」を複合したインターフェースを作ったとします。
そして、そのインターフェースを継承して「人間クラス」と「植物クラス」を作りました
これは好ましい状況とは言えません。
人間クラスは光合成をしませんし、植物クラスも呼吸をしません。
が、それを知らない人がクラスを改変すると、「人間が光合成をする」や「植物が呼吸をする」などのありえない状況が生まれてしまいます。
そういったバグを生み出す余地をなくすために、インターフェースは機能ごとに分ける必要があります
依存性逆転の原則
依存性逆転の原則とは、[下位モジュール --> 上位モジュール]のように、下位モジュールが上位モジュールに依存するような設計にすることです
例えば、自動車クラスを設計するとします。
おおざっぱにいえば、自動車クラスは「ハンドルをきった方向に曲がり、前進と後退とブレーキがかかる」ことができればよいわけです
問題は、それらの機能をどのモジュールで実現するかです。
基本的に上位モジュールは変更が少なく、下位モジュールは変更が多いです。
なので、主要な機能を変更の多い下位モジュールで実装してしまうと、後々の手間が大きくなってしまいます。
また、上位モジュールからの目線でも、「あの下位モジュールがないと動かない」という状況が生まれ、上位モジュールを再利用することが難しくなってしまいます。
終わりに
2回に渡って書いてきましたが、SOLIDは調べるほど様々な考えが出てきます。
この記事はSOLIDについて深く掘り下げたわけではなく、浅く、ざっくりまとめてみただけなので「もっと気になる」という方は記事の下にある参考元のページや、各原則について調べてみると良いと思います。
では
参考
インターフェース分離の原則
【オブジェクト指向】「インターフェース分離の原則」について | プログラミングマガジン
依存性逆転の原則