Prototypeパターンの解説

Prototypeパターンとは、既存のオブジェクトをコピーして新しいオブジェクトを生成するデザインパターンだ。これにより、同じ構造のオブジェクトを効率よく作成できる。

たとえば、ゲームのキャラクターを複製して、新しいキャラクターを簡単に作りたい場合、このパターンを使うことができる。

では、サンプルコードを一緒に見ていこう。

解説

例えば、ある動物園がいて、その動物園にはライオンやゾウなどの動物がいるとしよう。新しい動物を追加するときに、すでにいる動物を元にして新しい動物を簡単に作り出す方法がPrototypeパターンだ。

Step 1: 基本的な動物クラスを作る

まず、基本的な動物クラスを作るよ。すべての動物は名前と種類を持っているとする。このクラスには「鳴く」ためのメソッドも追加しよう。


// 基本的な動物クラス
class Animal {
  constructor(name, species) {
    this.name = name;
    this.species = species;
  }

  speak() {
    console.log(`${this.name}(${this.species})が鳴いています。`);
  }
}
      

Step 2: Prototypeパターンを使って新しい動物を複製する

次に、ある動物を元に新しい動物を複製(クローン)できるように、Prototypeパターンを使うよ。ここでは、Object.create() メソッドを使って既存の動物を複製する。


// 既存の動物をクローンする
const originalLion = new Animal("シンバ", "ライオン");
const clonedLion = Object.create(originalLion);

clonedLion.name = "ナラ"; // 名前だけ変えて新しい動物を作る
clonedLion.speak(); // 結果: ナラ(ライオン)が鳴いています。
      

Step 3: クローンされた動物が独立して動作することを確認する

ここで、クローンされた動物が元の動物と同じ種類を持ちながら、名前などのプロパティが違うことを確認しよう。


// 元のライオンとクローンされたライオンの比較
originalLion.speak(); // 結果: シンバ(ライオン)が鳴いています。
clonedLion.speak();   // 結果: ナラ(ライオン)が鳴いています。
      

Step 4: Prototypeパターンを活用して他の動物を作る

Prototypeパターンを使えば、他の種類の動物も簡単に作れるよ。たとえば、ゾウを元に新しいゾウをクローンすることもできるんだ。


// 新しいゾウを作る
const originalElephant = new Animal("ダンボ", "ゾウ");
const clonedElephant = Object.create(originalElephant);

clonedElephant.name = "ジャンボ";
clonedElephant.speak(); // 結果: ジャンボ(ゾウ)が鳴いています。
      

Prototypeパターンの重要なポイント

これでPrototypeパターンの解説は終わりだ。
このパターンを使うと、オブジェクトをコピーするだけで簡単に複製できるため、大量の同じ種類のオブジェクトを生成したいときに便利だ。