エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【デザパタ自作】イミュータブルパターン、自作プログラム編【262日目】

記事の内容

デザインパターンを毎週一つ勉強。

その時に学んだことを書いています。

やっていること

  1. デザインパターンが解決する問題の概要を聞く
  2. 概要からオリジナルでプログラムを書く
  3. 正しいデザインパターンの内容を聞いて再度実装

今回は、2番のオリジナルでプログラムを書いたところまでです。

プログラムが解決したい課題

$instance_1 = new Class(1);
$instance_2 = $instance_1;

$instance_1->value = 2;

var_dump($instance_1->value); //両方共
var_dump($instance_2->value); //2が出てくる

$instance_2は、$instance_1のコピーですが、これはインスタンスのアドレスのコピーです。

$instance_1を変更すると、$instance_2の値も変わってしまいます。同じものを参照しているから。

今回私が書いたコード

github.com

immutableディレクトリ内。

やっていること

  1. インスタンス化するときに、値を受け取り、インスタンス化する
  2. setで値を変更する際に、インスタンス内部でインスタンス化をする

これだと足りないこと

内部で持っている値がインスタンスの場合。

setで渡す値が、インスタンスのパスだった場合には、最初の問題が解決されていない。

next

問題の指摘をもらったので、問題を解決するコードを今度書いて、再度記事にします。

書きました。

willow710kut.hatenablog.com