プロトタイプ・パターンの定義
オブジェクトを作成するコストが比較的大きく、同じクラスの異なるオブジェクト間の差が小さい場合、作成時間を節約するために、既存のオブジェクトのコピーを使用して新しいオブジェクトを作成することができます。このように、プロトタイプに基づいてオブジェクトを作成する方法を、プロトタイプ・デザイン・パターン、略してプロトタイプ・パターンと呼びます。
プロトタイプ・パターンの実装:浅いコピーと深いコピー
シャローコピーとディープコピーの違いは、シャローコピーがオブジェクトではなくオブジェクトのインデックスだけをコピーするのに対し、ディープコピーはオブジェクトのインデックスだけでなくデータ自体もコピーするという点です。
Javaでは、Objectクラスのclone()メソッドは、シャロー・コピーと呼ばれる、オブジェクトのベース・データ型と参照オブジェクトのメモリ・アドレスのみをコピーするもので、参照オブジェクト自体を再帰的にコピーするものではありません。
ディープコピー手法の実装
- 最初の方法:オブジェクトの再帰的コピー
- つ目の方法:まずオブジェクトをシリアライズし、それを新しいオブジェクトにデシリアライズします。