目的
「リファクタリング」を理解するためにサンプルコードを PHP で書き換えてみました。
今回は「参照から値への変更」について書きます。
「参照から値への変更」 について
小さくて、不変で、コントロールが煩わしい参照オブジェクトがある。
値オブジェクトは、特に分散並列処理システムで有効です。
例
変更前
<?php
class Currency
{
private $_code;
public function __construct($code)
{
$this->_code = $code;
}
public function getCode()
{
return $this->_code;
}
}
$r = (new Currency('USD')) === (new Currency('USD'));
var_dump($r);
変更後
<?php
class Currency2
{
private $_code;
public function __construct($code)
{
$this->_code = $code;
}
public function getCode()
{
return $this->_code;
}
public function equals($arg)
{
if (!($arg instanceOf Currency2)) {
return false;
}
$other = $arg;
return $this->_code === $other->_code;
}
}
$r = (new Currency2('USD'))->equals(new Currency2('USD'));
var_dump($r);