作者virdust2003 (XDXDXDXDXDXD)
看板C_Sharp
標題Re: [問題]請問如何做到 一個函數多樣功能
時間Sat Aug 25 10:15:06 2007
※ 引述《del680202 (飄落的櫻花)》之銘言:
: 小弟寫了一個類別A
: 然後裡面有一個函數B
: 這個類別還蠻龐大的
: 但除了函數B 其他大部分都是固定的
: 但是我希望函數B可以替類別A提供多種功能
: 可能有幾十種也不一定
: 但是只為了這個函數B就去產生其他類別繼承類別A感覺不是很好的做法
這個需求,我覺得標準的做法應該是把相同函式先包成一個父類別
然後再根據不同的B去產生不同的子類別讓不同的CLASS使用,但你不想這樣
那有另外兩種方法,第一種擴充B加一個參數,讓B知道說他該怎麼反映
這樣文件上面也好寫,可能第一個參數是XX,那就做某一段,若是OO就做另一段
這樣就如同推文所講的使用if else了
壞處就是caller需要再加一個參數
另一個作法就是隱藏起來,如果將來的caller都已經確定了,那在B函式的一開頭
我記得可以用reflection機制來得知說是誰CALL我的,然後在做不同的動作
好處就是這邊對使用者都是隱藏的,但如果沒有寫在文件的話,可能對方會覺得
怎麼同一個函式執行的方式會不一樣呢?
我的話會用第一種~
: 小弟對這部分沒什麼概念
: 請問一般而言是用什麼方法達到一個類別的某幾個函數有多種不同的功能
--
-----------------------------------------------------------------------------
功課重,Project多的好幫手--專案王
http://steven.twbbs.org/ProjectKing
增加右鍵的威力RightMenuKing--右鍵王
http://steven.twbbs.org/RightMenuKing/
備份重要檔案的好幫BackupKing--備份王
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.224.244.248
推 Inshion:這個第二種做法很有啟發意義啊~\^0^/ 08/25 10:18
推 MRjk:第二種做法程式一大起來維護很麻煩 不是長久之計 08/25 22:23
→ MRjk:用reflection等於也是多用一個參數 不過另外一邊不知道而已 08/25 22:24