首页 新闻 会员 周边

可能是设计模式的问题

0
悬赏园豆:20 [已解决问题] 解决于 2008-08-27 10:20
<P>有A,B,C,D,E,F五个方法,它们的实现相似,仅如下所示的注释部分的代码不一样(我把这一块代码称为内部代码,而将内部代码包起来的代码称为外部代码),</P> <P>public void A(params...)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using(......}<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//xxxxxxx<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //xxxxxxx<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>}</P> <P>现在的问题是,如果外部代码出现变动,我就得改五个地方,这样很可能会改错,<BR>我的想法是把内部代码做成委托来传递进去,不知道有没有好的方法,高手指点,好像和template pattern又有点不一样</P>
lexus的主页 lexus | 初学一级 | 园豆:0
提问于:2008-08-24 14:02
< >
分享
最佳答案
0
外部代码提取为一个方法,此方法接受一个委托作为参数即可
Gray Zhang | 专家六级 |园豆:17610 | 2008-08-24 15:29
其他回答(3)
0
好像你的外部代码也不多啊,看看这样行不: public void A(params...) { using (GetObject()) { //.xxxxx //xxxxx } } public void GetObject() { return xxx; }
水言木 | 园豆:586 (小虾三级) | 2008-08-24 15:22
0
代码的复用通过继承实现 不能复用的地方 通过组合的方式将可变部分分离出来(这个可变部分是不可预计的变化) 具体详见设计模式里面的策略模式 如果是所有的过程都一样 不一样的地方仅仅是参数的不同(这里的变化是可以预计的) 具体详见设计模式里面的模板模式 如果动作都一样 但是涉及完成动作的对象不一样 具体详见设计模式里的工厂模式
小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2008-08-24 17:33
0
1天前 lexus : Gray zhang的做法我想到了,制作回调函数,还有其它的方法吗 @lexus 看你说的需求,我感觉应该用工厂方法模式好点.
zjy | 园豆:3194 (老鸟四级) | 2008-08-25 17:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册