オブジェクト指向開発(Object Oriented Programming)

アジャイル開発の基本ステップ

  1. 問題を発見する
  2. 原則を適用して問題を分析する
  3. 適切なパターンで問題を解決する

SOLID原則

  • SRP: The Single Responsibility Principle(単一責任の原則)
  • OCP: The Open-Closed Principle(オープン・クローズドの原則)
  • LSP: The Liskov Substitution Principle(リスコフの置換原則)
  • ISP: Interface Segregation Principle(インターフェース分離の原則 / segregate=分離する)
  • DIP: Dependency Inversion Principle(依存関係逆転の原則)

SOLID 詳細解説

  • SRP(単一責任の原則)
    クラスの修正理由は1つに限定する。2つ以上持ってはいけない。

  • OCP(オープン・クローズドの原則)
    「拡張」に対してはオープン(開いている)で、「修正」に対してはクローズド(閉じている)であるべき。

  • LSP(リスコフの置換原則)
    派生型は基本型と置換可能でなければならない。

  • ISP(インターフェース分離の原則)
    (説明未記載。実装時には不要な依存を避け、小さなインターフェースに分割する。)

  • DIP(依存関係逆転の原則)
    利用する側=上位クラスがインターフェースを定義し、利用される側=下位クラスがそれに従う。
    上位クラスは下位クラスに影響されてはいけない。
    上位クラスも下位クラスも具体的なクラスではなく、抽象(インターフェース/抽象クラス)に依存するべき。

アプリケーションの方針を決めている上位レベルモジュールが、実装の詳細を担当している下位レベルのモジュールに影響を与えるのが筋である
「アジャイルソフトウェア開発の奥義」(ロバート・C・マーチン p164)

DI(依存性注入)

依存関係逆転を実現する有効なパターンの一つがStrategyパターン
これを体系的に行う方法がDI(Dependency Injection)