Prototypeパターン:自身のオブジェクトのコピーを作成するデザインパターンをクラス図にまとめる

デザインパターン

Prototypeパターン

Prototypeパターンは、自身のオブジェクトのコピーを作成するデザインパターンです。
自分なりにPrototypeパターンをクラス図にまとめてみました。

Prototypeパターンのクラス図

Prototypeパターンのクラス図

Prototypeパターンのクラス図

Prototypeパターンの解説

Prototypeパターンは、自身のオブジェクトを返すメソッド(図ではclone)を作成するデザインパターンです。
cloneメソッドを実装していることを明確にするために、Prototypeパターンを適用するクラスは図のPrototypeインターフェースを実装します。

処理内容としてはPrototype1のcloneでは自オブジェクトを返す処理を実装し、Prototype2のcloneでも同様に自オブジェクトを返す処理を実装します。

Prototypeパターンをどういう場合に使うか

個人的にはあまり実装の機会がないですが、ゲームの似たようなオブジェクト(敵キャラや障害物など)を幾つも作成する時や、ドローイングツールなどのオブジェクトのコピーなどで使用されているそうです。

PlantUMLでPrototypeパターンのクラス図を記述する

Prototypeパターンのクラス図をPlantUMLで書いたときのソースです。

@startuml Prototype
interface Prototype{
  + clone() : Prototype
}
class Prototype1 extends Prototype{
  + clone() : Prototype1
}
class Prototype2 extends Prototype{
  + clone() : Prototype2
}
class Client{
  + operation() //この中でprototypeのcloneメソッドを呼び出す
}
Client ..> Prototype : use >
@enduml

参考サイトURL

Prototypeパターンのメリットや使いどころは? – yynsmk’s tech blog
デザインパターン ~Prototype~ – Qiita