PHPを使って工場のパターン設計を学んでいます。私のアプリケーションが行うことは、さまざまな形状の名前Rectangle, Squares etc
とそのx, y
位置を表示することです。最初のユーザーは、このような形状名の横に表示される x 値と y 値を指定しますRectangle(2, 2)
。
現在のコードの問題は、シェイプ名が表示されることRectangle
ですが、ユーザーが指定した x と y の値が表示されないことです。x と y の値を表示する理由と方法を教えてください。
以下は私のコードindex.phpです
include_once("ConcreteCreator.php");
class Client {
public function __construct() {
$shapeNow = new ConcreteCreator();
$display = $shapeNow->factoryMethod(new Rectangle(2, 2));
//Above I am passing x and y values in Rectangle(2, 2);
echo $display . '<br>';
}
}
$worker = new Client();
ここにConcreteCreator.phpがあります
include_once('Creator.php');
include_once('Rectangle.php');
class ConcreteCreator extends Creator {
public function factoryMethod(Product $productNow) {
//echo $productNow;
$this->createdProduct = new $productNow;
return $this->createdProduct->provideShape();
}
}
ここに Creator.php があります
abstract class Creator {
protected $createdProduct;
abstract public function factoryMethod(Product $productNow);
}
ここにProduct.phpがあります
interface Product {
function provideShape();
}
ここにRectangle.phpがあります
include_once('Product.php');
class Rectangle implements Product {
private $x;
private $y;
//Here is I am setting users provided x and y values with private vars
public function __construct($x, $y) {
echo $x;
$this->x = $x;
$this->y = $y;
}
public function provideShape() {
echo $this->x; //Here x does not show up
return 'Rectangle (' . $this->x . ', ' . $this->y . ')';
//above x and y does not show up.
}
}