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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Takahito Hashimoto Takahito Hashimoto
October 12, 2018
4.1k

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

Avatar for Takahito Hashimoto

Takahito Hashimoto

October 12, 2018

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. の略 • 「ソフトウェア開発においてすべての情報は単一で明確 な信頼できる表現になっていることが求められる」

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