作者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
1F:推 Inshion:这个第二种做法很有启发意义啊~\^0^/ 08/25 10:18
2F:推 MRjk:第二种做法程式一大起来维护很麻烦 不是长久之计 08/25 22:23
3F:→ MRjk:用reflection等於也是多用一个参数 不过另外一边不知道而已 08/25 22:24