看板 PHP 關於我們 聯絡資訊
我在某個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
ken1325:design pattern 05/21 19:10
ken1325:不是裡面那個叫工廠模式的嗎? 好像是吧...? 05/21 19:11
MOONRAKER:工廠模式要跟工廠要製造的class分開 05/21 19:12
MOONRAKER:產品專心定義產品,工廠專門生產 05/21 19:13
MOONRAKER:如這個 http://goo.gl/o5Um7 05/21 19:14
MOONRAKER:可是他混在一起,跟constructor做的事也沒差別 05/21 19:14
ken1325:嗯...好像真的沒差別QQ 05/21 19:20
PsMonkey:要作 singleton?(我不確定 PHP 可不可以) 05/21 20:32
johnny1972:猴大說對了,這是用PHP模擬singleton 05/21 21:35
johnny1972:通常搭配會把__construct,__clone,__wakeup設成private 05/21 21:37
johnny1972:另外還可以利用php對sibling method的特性做出有趣東西 05/21 21:39
MOONRAKER:可是沒看到他有__construct, __clone, __wakeup 05/21 22:15
MOONRAKER:這是phpqrcode的class QRencode,在/qrencode.php內 05/21 22:21
tails32100:看過原始碼了,覺得像是「未來要做多例模式」的感覺 05/21 22:40
MOONRAKER:那不就是工廠還沒蓋好只有個空廠房的意思 :| 05/22 08:52
tails32100:這是個沒有倉庫的生產線Orz 05/22 09:40