Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Takahito Hashimoto
October 12, 2018
3.6k

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

Takahito Hashimoto

October 12, 2018
Tweet

Transcript

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

    4 ISP インターフェース分離の原則 5 DIP 依存関係逆転の原則 アプリケーションの再利用性、保守性を高くするために必要な設計 の考え方を5個の原則としてまとめた 15
  2. 単一責任の原則 <人事部> <営業部> <社員> 労働時間の更新 業務ランクの計算 … 例)社員情報を 管理するシステム •

    人事部で使う業務ランクの計算 方法が変更になる • 開発者は営業部から利用されて いることに気づかずふるまいを 変更 営業部が利用している部分の動作 がおかしくなってしまう ↓ 20
  3. リスコフの置換原則 28 <四角形> 違反例 面積取得 Height 設定 Width 設定 <正方形>

    class Square extends Rectangle Rectangle r = new Square(); r.setHeight(5); r.setWidth(2); System.out.println(r.getArea()); これはどのように動作しますか?
  4. インターフェース分離の原則 32 <下位オブジェクト> Method – A Method - B Method

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

    - C <インターフェース> Method – A <インターフェース> Method – B <インターフェース> Method – C 上位オブジェクト 上位オブジェクト 上位オブジェクト 必要なものにだけ依存させる
  6. 依存関係逆転の原則 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. 依存関係逆転の原則 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. DRY原則 43 • Don’t Repeat Yourself. の略 • 「ソフトウェア開発においてすべての情報は単一で明確 な信頼できる表現になっていることが求められる」

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