はじめに
プロトタイプパターンは、既存のオブジェクトを複製することで新しいオブジェクトを生成するデザインパターンです。複雑なオブジェクトを一から作成するのではなく、既存のオブジェクトをコピーすることで効率的にオブジェクトを生成できます。
プロトタイプパターンの概要
プロトタイプパターンは以下の要素で構成されます。
- Prototype (原型): 複製可能なオブジェクトを宣言するインターフェースまたは抽象クラス。
- ConcretePrototype (具体的な原型): Prototypeインターフェースを実装し、複製機能を提供する具体的なクラス。
- Client (利用者): 新しいオブジェクトを生成するために、Prototypeに複製を要求します。
プロトタイプパターンの利点
- 複雑なオブジェクトを一から生成する必要がなくなり、コードがシンプルになります。
- 実行時に動的にオブジェクトを生成できます。
- サブクラス化を減らすことができます。
サンプルコード (Java)
// Prototype インターフェース
interface Shape extends Cloneable {
Shape clone();
void draw();
}
// ConcretePrototype クラス
class Rectangle implements Shape {
// ...
@Override
public Shape clone() {
return new Rectangle(this);
}
@Override
public void draw() {
System.out.println("Drawing a rectangle");
}
}
// Client クラス
class Application {
public static void main(String[] args) {
Shape rectangle = new Rectangle();
Shape clonedRectangle = rectangle.clone();
rectangle.draw();
clonedRectangle.draw();
}
}
まとめ
プロトタイプパターンは、既存のオブジェクトを複製することで新しいオブジェクトを生成するシンプルで効果的なデザインパターンです。複雑なオブジェクトの生成を簡略化し、コードの可読性とメンテナンス性を向上させることができます。状況に応じて適切に利用することで、より柔軟で効率的なオブジェクト生成が可能になります。