class Point
{
private $x, $y;
public __construction ($x, $y)
{
$this->x = $x;
$this->y = $y;
}
public function getX()
{
return $this->x;
}
public function getY()
{
return $this->y;
}
}
d'abord je voudrais écrire ceci:Pourquoi est préférable d'envelopper (et plusieurs) code pour l'amour de la loi de Demeter?
class Item
{
private $point; // Point
public __construction()
{
$this->point = new Point(0,0);
}
public function getPoint()
{
return $this->point;
}
}
puis:
$p = new Item();
$p->getPoint()->getX();
mais ils disent qu'il viole cette loi. Après refactoring:
class Item
{
private $point; // Point
public __construction()
{
$this->point = new Point(0,0);
}
public function getPointX()
{
return $this->point->getX();
}
public function getPointY()
{
return $this->point->getY();
}
}
puis:
$p = new Item();
$p->getPointX();
cette fois getPointX()
et est juste redondant "transmission" méthode. Je comprends que ig Point
a 1000 autres méthodes, il serait dangereux de retourner tout cet objet comme return $this->point
. Mais cette fois toutes les propriétés sont couvertes.
des thats à droite, mais je ne peux pas voir le bénéfice. –
@JohnSmith Lire Avantages/Inconvénients de la même ressource. – Justinas