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での設計提案のレビュー、コーディング標準のリファレンス資料の作成。