Fw: [請益] 詢問設計模式

看板C_Sharp作者 (太陽拳vs野球拳)時間11年前 (2012/11/06 10:21), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/1
※ [本文轉錄自 PHP 看板 #1Gb6qMcr ] 作者: dlikeayu (太陽拳vs野球拳) 看板: PHP 標題: [請益] 詢問設計模式 時間: Sat Nov 3 09:02:10 2012 最近學習OOP的設計模式 學了不少東西 但還是有些地方很困惑 有三個類別 分別為 interface IAsk { public function a1() . . . . . public function a10() } 實作 class Ask implements IAsk { //工廠模式&&singleton模式 private static $instance; public static function getInstance() { if (ServiceRepository::$instance == NULL) { ServiceRepository::$instance = new ServiceRepository; } return ServiceRepository::$instance; } public function a1(){xxx;return true;} . . . . public function a10(){xxx;return true;} } 工廠模式建立實體 class Factory { public static function api() { return Ask::getInstance(); } } ========== 以下開始程式 ========== 想請較的是 我現在想在工廠實體前 或在實作function時先前判定一樣布林 true或false 如果是false 全部實作的function不管它是在做什麼用的 都一律return false 不知道這種設計模式要用哪種實例來完成比較好? 是要再建另一個實作class 去 return 所有 function false 還是可以在Ask那支實作什麼預先判定 (可是光用想的好像變成要在每支function前都重覆判定一次,感覺很醜) 麻煩先進們指導一下 感謝! 補充: 這邊說一下我的程式用法 以後只要 EX: Factory::api()->a7(); 就能呼叫我的東西 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.249.129.244 ※ 編輯: dlikeayu 來自: 111.249.129.244 (11/03 09:03)

11/03 09:57, , 1F
__call()
11/03 09:57, 1F
有 Java ,c# 共用的概念解法嗎? __call() 好像是特有的 雖然可以用,但我想更暸解來龍去脈 感謝! ※ 編輯: dlikeayu 來自: 111.249.129.244 (11/03 12:12)

11/03 19:08, , 2F
應該算 reflection 吧...Java 不熟不過應該有一樣概念
11/03 19:08, 2F
※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: dlikeayu (111.249.152.90), 時間: 11/06/2012 10:21:13 這邊解釋一下 雖然是PHP 就差定義 型別 主要是想求做法或是可用的設計模式 求解 謝囉! ※ 編輯: dlikeayu 來自: 111.249.152.90 (11/06 10:22)

11/06 13:45, , 3F
不考慮把你的設計改成 Ask.ask("a7"); ?
11/06 13:45, 3F

11/06 13:58, , 4F
指定method name呼叫在java, c#都可以用reflection做到
11/06 13:58, 4F

11/06 13:58, , 5F
要做另一個class還是在Ask裡做,要看你這新功能是Ask的功能
11/06 13:58, 5F

11/06 13:59, , 6F
還是有另一個提供全false的IAsk Service
11/06 13:59, 6F

11/18 16:38, , 7F
如果開關不會動態改變,我會比較傾向建立一個EmptyAsk來ret
11/18 16:38, 7F
文章代碼(AID): #1Gc7GRxp (C_Sharp)