比方说,我有3个PHP类:ShedBuilder,HouseBuilder和TableBuilder和下面的代码:PHP - 如何跨多个子类共享设置并实例化这些共享设置一次?
$worker_1 = new ShedBuilder(); // I only know how to build a shed
$worker_2 = new HouseBuilder(); // I only know how to build a house
$worker_3 = new TableBuilder(); // I only know how to build a table
$worker_1->build();
$worker_2->build();
$worker_3->build();
我想worker_1,worker_2和worker_3类每个共享相同的工具包的工作,例如,我希望所有3名工人使用可用的工具,例如锤子,螺丝刀,钉子等。但worker_1将建立棚屋,worker_2将建造房屋,worker_3建立桌子。
设置工具集一次,然后让3名工人都知道如何访问他们工作所需工具的最佳方式是什么?
我想到了已经货场/表/房地产建筑商从每一个父类,生成器扩展,但是这意味着,当我每个实例我必须给他们每个工具集:
$toolset = new Toolset();
$toolset->addTool('hammer');
$toolset->addTool('screwdriver');
$toolset->addTool('nails');
$worker_1 = new ShedBuilder($toolset);
$worker_2 = new HouseBuilder($toolset);
$worker_3 = new TableBuilder($toolset);
我会而是一次实例化这些工具,然后让所有3个工人/班级分别了解该工具集并构建其各个项目。
什么是最好的方式来实现我想在PHP中做什么?
是的,注入工具集作为依赖关系几乎是你要找的。你在执行这个过程中遇到了一个具体问题吗? – deceze 2012-02-19 00:57:22
实现起来并不是问题,出于某种原因,它似乎不是“最佳”或“最优化”的构建方式,但您的评论是很好的保证,我将继续执行此实现。 – ews2001 2012-02-19 01:06:47