比方說,我有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