【发布时间】:2016-02-13 02:26:12
【问题描述】:
让我们以制造商/汽车型号为例。一个模型有一个特定的制造商。因此,假设模型“Punto”、“500”、“Panda”始终具有制造商“Fiat”。
如果每个模型都是一个类并且制造商是一个类实例,那么在没有制造商类的多个实例的情况下将模型连接到制造商的最简洁/最佳解决方案是什么。通过构造函数设置它们是显而易见的,因为模型永远不会改变它的制造者。
让我们在一个简化的代码示例中展示我的问题:
class Manufacturer
{
protected $name;
public function __construct($name)
{
$this->name = $name;
}
}
abstract class Car
{
protected $manufacturer;
public function __construct(Manufacturer $manufacturer)
{
$this->manufacturer = $manufacturer;
}
abstract public function getModel();
public function getManufacturer()
{
return $this->manufacturer;
}
}
class ModelA extends Car
{
public function getModel()
{
return 'A';
}
}
class ModelB extends Car
{
public function getModel()
{
return 'B';
}
}
// The manufacturer instance
$manufacturerC = new Manufacturer('C');
// Setting the manufacturer for the models is obvious
// because they always get manufactured from the manufacturer "C"
// and never from a manufacturer "X"
$modelA = new ModelA($manufacturerC);
$modelB = new ModelB($manufacturerC);
【问题讨论】:
-
我会使用 & 传递对实例的引用
-
@RonDadon 这就是我的示例代码的工作方式。但是为模型设置制造商的参考是显而易见的,因为它总是相同的。
-
如果您使用参考,制造商的变化将反映在所有依赖它的模型中。您传递它的方式是传递实例的副本,因此实例本身的更改不会反映在“汽车”中。
标签: php oop object design-patterns