SOLID原則
単一責任の原則(SRP : Single Responsibility Principle)
"クラスを変更する理由は1つでなければならない"
クラスの責任は1つにして複雑化などを防ぐ
オープン・クローズドの原則(OCP : Open Closed Principle)
"拡張に対して開いていて、修正に対して閉じていなければならない"
既存のコードに手を入れることなく修正・拡張できるようにする
リスコフの置換原則(LSP : Liscov Substitution Principle)
"派生型は基本型と置き換え可能でなければならない"
継承によって親クラスの実装を全く別のものに変えてしまうのは間違った継承である
インターフェイス分離の原則(ISP : Interface Segregation Principle)
"クライアントに、クライアントが利用しないメソッドへの依存を強制してはならない"
利用するクライアントの視点からインターフェイスを定義しよう
依存性逆転の原則(DIP : Dependency Inversion Principle)
"上位モジュールは下位モジュールに依存してはならない。どちらも「抽象」に依存するべきである"
"「抽象」は実装の詳細に依存してはならない。実装の詳細が「抽象」に依存すべきである。"
実装からインターフェイスを抜き出すのではなく、要求に応じてインターフェイスを定義し、インターフェイスにあわせて実装する