GoF_Design_Patterns(Python)

>100 Views

May 06, 26

スライド概要

profile-image

何卒よろしくお願い申し上げます。 一流のIT研修講師を目指し、日々研鑽を続けております。 本資料は外部公開用としてご提供するものです。 ALJ Education Plus 株式会社 Yukiko(※趣味枠アカウント)

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

GoF デザインパターン なぜ学ぶか? ✓ 設計品質が劇的に向上する ✓ コードレビューが効率化される ✓ チーム内の共通言語になる ✓ リファクタリングの指針になる 全23種 完全ガイド ✓ 面接・資格試験で役立つ 5 7 11 生成 構造 振る舞い 2026 IT研修資料 | GoFデザインパターン 「暗記するものではなく、 問題を解決する道具」

2.

デザインパターンとは 3つの カテゴリ 生成パターン Observer / Strategy Command / Iterator 『デザインパターン』として体系化した23種のパターン。 再利用性 共通言語 保守性 実績ある設計を 即座に適用できる チームの意思疎通 を効率化する 変更に強い設計を 実現できる 7パターン Adapter / Proxy Decorator / Facade 振る舞いパターン 再利用可能な解決策。1994年 GoF(Gang of Four)が 5パターン Factory / Builder Prototype / Singleton 構造パターン ソフトウェア設計における繰り返し現れる問題に対する 学習の優先順位 Top5 11パター ン ① Factory ② Singleton ③ Strategy ④ Observer ⑤ Decorator GoFデザインパターン完全ガイド

3.

生成パターン Creational Patterns コード例:Builder パターン def set_walls(self, material): self.house.walls = material Factory / Abstract Factory return self # チェーン用 def build(self): オブジェクト生成をサブクラスに委譲 関連オブジェクト群を一貫して生成 return self.house # メソッドチェーンで直感的に構築 Builder 複雑なオブジェクトを段階的に構築 メソッドチェーンで直感的に設定 house = (HouseBuilder() .set_walls("石材") .set_doors(5) .set_roof("スレート") .add_garage() .build()) Prototype / Singleton 既存オブジェクトの複製 | インスタンスを唯一に保証 SQLクエリビルダー HTTPリクエスト テストデータ生成 SELECT文を段階的に構築 ヘッダー・ボディを設定 柔軟なモックオブジェクト GoFデザインパターン完全ガイド

4.

構造パターン 構造パターン 全7種 Structural Patterns Decorator パターンのイメージ Adapter Bridge Composite Decorator 機能を動的に追加 �� WhipDecorator +¥100 非互換IFを変換 抽象と実装を分離 ツリー構造を統一 Facade Flyweight Proxy SugarDecorator +¥20 MilkDecorator +¥50 � Coffee ¥300 複雑さを隠蔽 合計: ¥470 Proxy 共有でメモリ節約 アクセスを制御 # Proxy: 遅延読み込みの例 class ImageProxy(Image): def __init__(self, filename): self._real = None アクセスを制御 self.filename = filename def display(self): if not self._real: self._real = RealImage(self.filename) self._real.display() GoFデザインパターン完全ガイド

5.

振る舞いパターン 振る舞いパターン 全11種 Behavioral Patterns Chain of Resp Command Iterator Mediator Memento Observer State Strategy Template Visitor Interpreter Observer パターン Subject (状態変化) Observer A (View更新) Observer B (ログ記録) Observer C (通知送信) notify() → 全Observerに通知 Strategy vs State Strategy: アルゴリズムを外部から切り替え 例)決済方法: クレカ / 電子マネー / 振込 # Command: Undo/Redo の実装 class LightOnCommand(Command): def execute(self): self.light.turn_on() def undo(self): self.light.turn_off() State: 状態ごとに振る舞いが変わる 例)自販機: コインあり / コインなし remote.execute_command(on_command) # 実行 remote.undo_last() # 元に戻す GoFデザインパターン完全ガイド

6.

パターン選択ガイド ― 何をしたいか → どのパターンを使うか カテゴリ やりたいこと パターン カテゴリ やりたいこと パターン Factory / Abstract Factory 振る舞い 状態変化を複数に通知する Observer 振る舞い アルゴリズムを切り替える Strategy Command 生成 オブジェクト生成を柔軟に 生成 複雑なオブジェクトを段階的に Builder 作る 生成 インスタンスを1つだけにする Singleton 振る舞い 操作をオブジェクト化 (Undo) 生成 オブジェクトをコピーして作る Prototype 振る舞い 状態によって振る舞いを変える State 構造 非互換なIFを統一する Adapter 振る舞い 処理の連鎖を作る Chain of Responsibility 構造 機能を動的に追加する Decorator 振る舞い 状態を保存・復元する Memento 構造 複雑なシステムを簡単に使う Facade 振る舞い 複雑な相互作用を整理する Mediator 構造 アクセスを制御する Proxy 振る舞い コレクション要素を順次処理 Iterator 構造 ツリー構造を統一的に扱う Composite 振る舞い 処理の骨格を定義する Template Method 構造 大量の類似オブジェクトを効率 Flyweight 化 振る舞い 既存クラスに操作を追加する Visitor 構造 抽象と実装を分離する 振る舞い 簡単な言語を実装する Interpreter Bridge GoFデザインパターン完全ガイド

7.

まとめ ✓ 暗記より「問題ありき」の思考を ✓ 頻出5つから始めて徐々に広げる ✓ 実コードに適用して初めて理解が深まる ✓ パターンはチームの共通言語になる ✓ 設計の「なぜ」が語れるエンジニアへ 「デザインパターンは 問題を解決する道具。 1 まず頻出5パターンを実装してみる パターンありきではなく、 2 実務コードで問題を発見する 問題ありきで考えよう。」 3 パターンを適用しリファクタリング 4 参考: Refactoring Guru / Python Design Patterns Guide / GoF原典 チームで設計ドキュメントに活かす