DIP(The Dependency Inversion Principle)- SOLID

DIP(The Dependency Inversion Principle)依存性逆転の原則
– 具象化されたものではなく、抽象化されたものに依存するべきである。

参考:こちら

 

具体的なものに依存するより、抽象的なものに依存した方が

影響少ないよ!安パイ!

と言った感じでしょうか。

 

 

インターフェイス、クライアント・・・。

いまいちわからない(´ι_` )

 

インターフェイス  → 使うもの

クライアント   → 使う人

とこんな感じ?

 

参考記事の

「所有権」も逆転している。

この意味がわかりません。

わかったら追記します!

OCP(The Open-Closed Principle)- SOLID

OCP(The Open-Closed Principle)オープン・クローズドの原則
– オブジェクトは拡張に対して開いており、修正に対して閉じていなければならない。

参考:こちら

 

この法則ですが、よく聞くし、言いたいこともなんとなくわかるのですが、

どうすれば、この法則に沿ったソースが書けるか、なってるのかがまだわかんないですね。わかったらまた書こう。

 

ー オブジェクト指向の核心をついている

というますが、オブジェクト指向がまだまだなので、「確かにそうだ!」とかまだ言えるレベルではないです、はい。

 

オブジェクト指向の話って、よく「抽象」て言葉が出てくるんですけど、

日本語が苦手なので、ここで覚えます。

「抽象」《名・ス他》

多くの物や事柄や具体的な概念から、それらの範囲の全部に共通な属性を抜き出し、これを一般的な概念としてとらえること。
(ほうほう、なるほど、共通部分を簡潔に捉える的な感じですかね?)

まとめ
・追加/継承する時が楽にできる(開放)
・その時、既存のコードを変更しなくていい、
そのコードが使われる時、使う主体に影響を与えない(閉鎖)

 

⇒使う側にも、使われる側にも影響が少ないもの

SRP(The Single Responsibility Principle)- SOLID

SOLIDとは…
オブジェクト指向設計の五つの原則の頭文字をとったものだそうです。

SRP(The Single Responsibility Principle)
– クラスの責務は単一でなければならない。

OCP(The Open-Closed Principle)
– オブジェクトは拡張に対して開いており、修正に対して閉じていなければならない。

LSP(The Liskov Substitution Principle)
– 派生クラスは、その基底クラスと置換可能でなくてはならない。

ISP(The Interface Segregation Principle)
– クライアントに対して利用しないインタフェースへの依存を強制してはならない。

DIP(The Dependency Inversion Principle)
– 具象化されたものではなく、抽象化されたものに依存するべきである。

 

今回は、
SRP(The Single Responsibility Principle)単一責務の原則
-クラスの責務は単一でなければならない。

について、書きます。

1つのクラスには、1つの責任・役割を持たせる。

その理由としては、
クラスの責任・役割を小さくすることで、読みやすくて、保守性も上がるからだそうです。

コードの変更の必要が発生した時、1つのクラスに複数の役割の関数をもたせていた場合、
依存が大量に発生し、変更箇所が増える。
こんな感じかなっと掴んでいます。この読みが当たっているかはわかりませんが・・・。

設計って大事だなっと、しみじみと思いました。 おわり

参考:
オブジェクト指向の法則集
プログラマが知るべき97のこと