SOLIDって?
OODの設計で心がけること。
以下、SOLIDってつまりこういうことでしょって自己解釈。
Single Responsibility
1クラス、1つの役割、多すぎると抽象化しにくい。
Open Close
他の原則を守ればなされる
-
拡張に開いている
インタフェース、抽象クラスを実装した新しいクラスで機能を追加できる。
-
修正に閉じている
インタフェース、抽象クラスを実装しているので修正しにくい。
Liskov Substitution
基底クラス型でインスタンスを扱う。
派生クラスで好き勝手しない(ふるまいを変えない)、いわゆるIsA関係に従う。
Interface Segregation
実装クラスで扱わないメソッドはインタフェースで定義しない。
というよりは、インタフェースに機能が多すぎる、SRPに従う。
Dependency Inversion
抽象に依存する
インタフェース、抽象クラスは積極的に使う(正しく)