[討論] 神秘的factory

看板PHP作者 (㊣康少校是死到哪裡去了)時間12年前 (2013/05/21 18:54), 編輯推噓1(1015)
留言16則, 5人參與, 最新討論串1/1
我在某個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

05/21 19:10, , 1F
design pattern
05/21 19:10, 1F

05/21 19:11, , 2F
不是裡面那個叫工廠模式的嗎? 好像是吧...?
05/21 19:11, 2F

05/21 19:12, , 3F
工廠模式要跟工廠要製造的class分開
05/21 19:12, 3F

05/21 19:13, , 4F
產品專心定義產品,工廠專門生產
05/21 19:13, 4F

05/21 19:14, , 5F
05/21 19:14, 5F

05/21 19:14, , 6F
可是他混在一起,跟constructor做的事也沒差別
05/21 19:14, 6F

05/21 19:20, , 7F
嗯...好像真的沒差別QQ
05/21 19:20, 7F

05/21 20:32, , 8F
要作 singleton?(我不確定 PHP 可不可以)
05/21 20:32, 8F

05/21 21:35, , 9F
猴大說對了,這是用PHP模擬singleton
05/21 21:35, 9F

05/21 21:37, , 10F
通常搭配會把__construct,__clone,__wakeup設成private
05/21 21:37, 10F

05/21 21:39, , 11F
另外還可以利用php對sibling method的特性做出有趣東西
05/21 21:39, 11F

05/21 22:15, , 12F
可是沒看到他有__construct, __clone, __wakeup
05/21 22:15, 12F

05/21 22:21, , 13F
這是phpqrcode的class QRencode,在/qrencode.php內
05/21 22:21, 13F

05/21 22:40, , 14F
看過原始碼了,覺得像是「未來要做多例模式」的感覺
05/21 22:40, 14F

05/22 08:52, , 15F
那不就是工廠還沒蓋好只有個空廠房的意思 :|
05/22 08:52, 15F

05/22 09:40, , 16F
這是個沒有倉庫的生產線Orz
05/22 09:40, 16F
文章代碼(AID): #1Hcr9YKf (PHP)
文章代碼(AID): #1Hcr9YKf (PHP)