---
title: GoF_Design_Patterns（Python）
tags: 
author: [smile_yukiko_it](https://docswell.com/user/smile_yukiko_it)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/YJ9PPVGP73.jpg?width=480
description: GoF_Design_Patterns（Python） by smile_yukiko_it
published: May 06, 26
canonical: https://docswell.com/s/smile_yukiko_it/5WRVRD-2026-05-06-095335
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/YJ9PPVGP73.jpg)

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


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GJ8DDPVXJD.jpg)

デザインパターンとは
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デザインパターン完全ガイド


# Page. 3

![Page Image](https://bcdn.docswell.com/page/LJLMM15NER.jpg)

生成パターン
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(&quot;石材&quot;)
.set_doors(5)
.set_roof(&quot;スレート&quot;)
.add_garage()
.build())
Prototype / Singleton
既存オブジェクトの複製 |
インスタンスを唯一に保証
SQLクエリビルダー
HTTPリクエスト
テストデータ生成
SELECT文を段階的に構築
ヘッダー・ボディを設定
柔軟なモックオブジェクト
GoFデザインパターン完全ガイド


# Page. 4

![Page Image](https://bcdn.docswell.com/page/47MYYW3Q7W.jpg)

構造パターン
構造パターン 全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デザインパターン完全ガイド


# Page. 5

![Page Image](https://bcdn.docswell.com/page/P7R99YQKE9.jpg)

振る舞いパターン
振る舞いパターン 全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デザインパターン完全ガイド


# Page. 6

![Page Image](https://bcdn.docswell.com/page/PJXQQG557X.jpg)

パターン選択ガイド ― 何をしたいか → どのパターンを使うか
カテゴリ やりたいこと
パターン
カテゴリ やりたいこと
パターン
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デザインパターン完全ガイド


# Page. 7

![Page Image](https://bcdn.docswell.com/page/3JK9946RJD.jpg)

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


