我目前正在阅读一本关于设计模式的书,在书中他使用了一个这样的例子:
<?php
//Client.php
/*Age groups:
18-29: Group 1
30-39: Group 2
40-49: Group 3
50+ : Group 4
*/
function __autoload($class_name)
{
include $class_name . '.php';
}
class Client
{
//$hotDate is component instance
private $hotDate;
public function __construct()
{
$this->hotDate=new Female();
$this->hotDate->setAge("Age Group 4");
echo $this->hotDate->getAge();
$this->hotDate=$this->wrapComponent($this->hotDate);
echo $this->hotDate->getFeature();
}
private function wrapComponent(IComponent $component)
{
$component=new ProgramLang($component);
$component->setFeature("php");
$component=new Hardware($component);
$component->setFeature("lin");
$component=new Food($component);
$component->setFeature("veg");
return $component;
}
}
$worker=new Client();
?>
我的问题是 wrapComponent 函数。如何在不丢失以前内容的情况下多次初始化类变量?在我看来,唯一会返回的是 Food 类的组件,因为它是最后一个被初始化的。抱歉,如果这是一个明显的问题,但我在网上找不到任何东西,而且我以前从未见过这样做过。