作者MOONRAKER (㊣康少校是死到哪裡去了)
看板PHP
標題[討論] 神秘的factory
時間Tue May 21 18:54:22 2013
我在某個classlib裡面看到一個神秘的class
化簡之後是這樣的
class X {
public $prop1;
public $prop2;
public static function factory($_prop1, $_prop2) {
$Xinst =
new X();
$Xinst->prop1 = $_prop1;
$Xinst->prop2 = $_prop2;
// ...
return $Xinst;
}
public function method1() {
// ...
}
// ...
}
這個factory不是獨立的class,也只能創造 class X 的物件
到底跟constructor有什麼不一樣…
是把constructor改個名字叫factory比較帥嗎…
--
從前有個馬鈴薯王國 有個高貴偉大的國王
有的人尊敬他 有的人畏懼他 但有個人敢看不起他不只是一條龍
嘿呵 快出動 去征服 去擺平 嘿呵 快出征 去征服那條龍
嘿呵 快出動
(宰了它!轟了它!)嘿呵 快出征 去征服那條龍
:■ Potatoes and Dragons (C)Alphanim France 2004-05 :.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.163.12.174
1F:→ ken1325:design pattern 05/21 19:10
2F:→ ken1325:不是裡面那個叫工廠模式的嗎? 好像是吧...? 05/21 19:11
3F:→ MOONRAKER:工廠模式要跟工廠要製造的class分開 05/21 19:12
4F:→ MOONRAKER:產品專心定義產品,工廠專門生產 05/21 19:13
6F:→ MOONRAKER:可是他混在一起,跟constructor做的事也沒差別 05/21 19:14
7F:→ ken1325:嗯...好像真的沒差別QQ 05/21 19:20
8F:推 PsMonkey:要作 singleton?(我不確定 PHP 可不可以) 05/21 20:32
9F:→ johnny1972:猴大說對了,這是用PHP模擬singleton 05/21 21:35
10F:→ johnny1972:通常搭配會把__construct,__clone,__wakeup設成private 05/21 21:37
11F:→ johnny1972:另外還可以利用php對sibling method的特性做出有趣東西 05/21 21:39
12F:→ MOONRAKER:可是沒看到他有__construct, __clone, __wakeup 05/21 22:15
13F:→ MOONRAKER:這是phpqrcode的class QRencode,在/qrencode.php內 05/21 22:21
14F:→ tails32100:看過原始碼了,覺得像是「未來要做多例模式」的感覺 05/21 22:40
15F:→ MOONRAKER:那不就是工廠還沒蓋好只有個空廠房的意思 :| 05/22 08:52
16F:→ tails32100:這是個沒有倉庫的生產線Orz 05/22 09:40