オブジェクト指向設計原則から学ぶアプリケーション設計(SOLID原則についてのまとめ)

9e12077b87be585b3d2406fd576b75c5?s=47 Takahito Hashimoto
October 12, 2018
2k

 オブジェクト指向設計原則から学ぶアプリケーション設計(SOLID原則についてのまとめ)

9e12077b87be585b3d2406fd576b75c5?s=128

Takahito Hashimoto

October 12, 2018
Tweet

Transcript

  1. 16.

    SOLID原則とは 1 SRP 単一責任の原則 2 OCP オープン・クローズドの原則 3 LSP リスコフの置換原則

    4 ISP インターフェース分離の原則 5 DIP 依存関係逆転の原則 アプリケーションの再利用性、保守性を高くするために必要な設計 の考え方を5個の原則としてまとめた 15
  2. 21.

    単一責任の原則 <人事部> <営業部> <社員> 労働時間の更新 業務ランクの計算 … 例)社員情報を 管理するシステム •

    人事部で使う業務ランクの計算 方法が変更になる • 開発者は営業部から利用されて いることに気づかずふるまいを 変更 営業部が利用している部分の動作 がおかしくなってしまう ↓ 20
  3. 29.

    リスコフの置換原則 28 <四角形> 違反例 面積取得 Height 設定 Width 設定 <正方形>

    class Square extends Rectangle Rectangle r = new Square(); r.setHeight(5); r.setWidth(2); System.out.println(r.getArea()); これはどのように動作しますか?
  4. 33.

    インターフェース分離の原則 32 <下位オブジェクト> Method – A Method - B Method

    - C <インターフェース> Method – A Method – B Method – C 上位オブジェクト 上位オブジェクト 上位オブジェクト 実装を分離する (まだ不足)
  5. 34.

    インターフェース分離の原則 33 <下位オブジェクト> Method – A Method - B Method

    - C <インターフェース> Method – A <インターフェース> Method – B <インターフェース> Method – C 上位オブジェクト 上位オブジェクト 上位オブジェクト 必要なものにだけ依存させる
  6. 38.

    依存関係逆転の原則 37 Main Task TaskRepository 例) Todoアプリ(タスクを登録してDBに格納する) Class Task {

    public Task(String todo) { this.todo = todo; } public save() { TaskRepository r = new TaskRepository(); r.save(this); } }
  7. 39.

    依存関係逆転の原則 38 Main Task TaskRepository 依存関係を外部から注入する Class Task { public

    Task(String todo, Repository repo) { this.todo = todo; this.repo = repo; } public save() { r.save(this); } } Repository
  8. 44.

    DRY原則 43 • Don’t Repeat Yourself. の略 • 「ソフトウェア開発においてすべての情報は単一で明確 な信頼できる表現になっていることが求められる」

    • ソースコードだけでなくテストやビルドも対象 • コードであれば抽象化し、デザインパターンを活用する • テストやビルドは自動化し、人間が何度も行わない