目的
「リファクタリング」を理解するためにサンプルコードを PHP で書き換えてみました。
今回は「継承による委譲の置き換え」について書きます。
「継承による委譲の置き換え」 について
データの共有は継承では変換できない責任です。
例
変更前
<?php
class Employee
{
/* @var Person */
private $_person;
public function __construct()
{
$this->_person = new Person();
}
public function getName()
{
return $this->_person->getName();
}
public function setName($arg)
{
$this->_person->setName($arg);
}
public function toString()
{
return 'Emp: ' . $this->_person->getLastName();
}
}
class Person
{
private $_name;
public function getName()
{
return $this->_name;
}
public function setName($arg)
{
$this->_name = $arg;
}
public function getLastName()
{
return 'getLastName';
}
}
$e = new Employee();
$e->setName('namename');
echo $e->getName() . "\n";
echo $e->toString() . "\n";
変更後
<?php
class Employee2 extends Person2
{
public function toString()
{
return 'Emp: ' . $this->getLastName();
}
}
class Person2
{
private $_name;
public function getName()
{
return $this->_name;
}
public function setName($arg)
{
$this->_name = $arg;
}
public function getLastName()
{
return 'getLastName';
}
}
$e = new Employee2();
$e->setName('namename');
echo $e->getName() . "\n";
echo $e->toString() . "\n";