43
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

D222A724-481E-4E59-90DA-5D7B03F94C9C.png
めもりーちゃんはちょうぜつソルジャー DNA を持っているので闇の組織のクローンソルジャーのプロトタイプに選ばれてしまったのです。がんばれオブジェクト指向警察!

闇の組織が最強の部隊を作るときはだいたい、ソルジャー適性を持つとわかっている DNA をコピーする (なぜか後天的に獲得した能力も付いてくる) のが王道ですね。遺伝子操作をインスタンスごとにいちいち new からやるのは、手間と時間がかかりすぎるし、個体差が出てしまうリスクもあります。すでにいい感じに出来上がってる塩基配列からクローンを量産するのが悪の科学の基本です。

同じ特性のオブジェクトをたくさん作って、使用後 (いったいどんな薬物を!?) の状態変化はやりっぱなし放置、どうせ使わなくなったら最後は使い捨てて GC されるんだから、というようなシチュエーションで、このパターンはすごく活躍できます。 (いけない、だんだん人道的に欝入ってきました)

現実には、大量投げっぱなしといえば、たとえばシューティングゲームの弾丸です。テスト用の事前条件環境も、いい感じに構築済みのものをプロトタイプとしたクローンにしておければ、前のテストのものを使い捨てて、副作用の影響なしに次のテストに臨めます。

あ、そういえば、活躍するクローンは必ずミュータブルで、互いに異なるインスタンスだという点、地味に効いてくるポイントです。

だってもしオブジェクトがイミュータブルなら、クローンなんてする必要なくて、定数としてオブジェクトを共有すればいいでしょ。まったく同じものでメモリを埋めるなんてもったいない。

でも、いくらメモリがもったいないからって、ミュータブルなオブジェクトを共有するのはもっとダメですね。ひとつのインスタンスが剣も盾も装備して、ちょんまげまで乗っちゃう。ちょんまげは失敗だから破棄したくてもできないし、そんな影分身がみんな同じ動きをするなんて...

ええと、何が言いたいかというと、共有してるから状態が変わっちゃダメな JavaScript の prototype は、デザインパターンでいう Prototype とはまったく関係がない、というかむしろ、真逆の特徴を持っているのでくれぐれも混同しないでくださいね、ということです。

43
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?