PlantUML クラス図: デザインパターン

PlantUMLクラス図でGoFデザインパターンをドキュメント化。Observer、Strategy、Factory、Singletonパターンの完全な例。

Class Diagrams

詳細な説明

PlantUMLクラス図でのデザインパターン

PlantUMLクラス図はデザインパターンをドキュメント化する標準的な方法です。各パターンには図形で即座に認識できる特徴的な構造があります。

Observerパターン

@startuml
interface Observer {
  +update(event: Event): void
}

abstract class Subject {
  -observers: List<Observer>
  +subscribe(o: Observer): void
  +unsubscribe(o: Observer): void
  +notify(event: Event): void
}

class EventBus extends Subject {
  +publish(topic: String, data: any): void
}

class Logger implements Observer {
  +update(event: Event): void
}

Subject o-- Observer
@enduml

Strategyパターン

interface SortStrategy {
  +sort(data: List): List
}

class QuickSort implements SortStrategy
class MergeSort implements SortStrategy

class Sorter {
  -strategy: SortStrategy
  +setStrategy(s: SortStrategy): void
  +doSort(data: List): List
}

Sorter --> SortStrategy

Strategyパターンはコンテキストからストラテジーインターフェースへの-->関連を使用し、具象ストラテジーがインターフェースを実装します。

Factory Methodパターン

abstract class Creator {
  +{abstract} createProduct(): Product
  +doSomething(): void
}

interface Product {
  +use(): void
}

class ConcreteCreatorA extends Creator {
  +createProduct(): Product
}

class ConcreteProductA implements Product

ConcreteCreatorA ..> ConcreteProductA : creates

"creates"ラベル付きの破線依存矢印(..>)がファクトリ関係を明確に示します。

各矢印の使い分け

読みやすいパターン図の鍵は正しい矢印タイプを使うことです。継承(<|--)は"is-a"、コンポジション(*--)は"has-aかつ所有"、関連(-->)は"使用する"、依存(..>)は"作成するまたは一時的に依存する"。

ユースケース

ジュニア開発者へのデザインパターン教育、ADRでのアーキテクチャ決定のドキュメント、PRでの設計提案のレビュー、コーディング標準のリファレンス資料の作成。

試してみる — PlantUML Editor

フルツールを開く