多态方面,感觉不好实现,不过还是想问下
以下代码,想用多态方式来替换if else,网上说的最多的是 if 判断的时候是判断类(class)的类型
而非整形或者数字类型。
如果 if 判断的是类类型,确实容易用多态实现。
下面的例子是整型值判断。我想求教下各位,这样能不能用多态的方式实现,或者给写建议,谢谢各位了
procedure TForm1.proc1();begin ShowMessage('proc1');end;procedure TForm1.proc2();begin ShowMessage('proc2');end;procedure TForm1.proc3();begin ShowMessage('proc3');end;procedure TForm1.ExtractedMethod1;begin if ComboBox1.ItemIndex = 0 then begin proc1; end else if ComboBox1.ItemIndex = 1 then begin proc2; end else if ComboBox1.ItemIndex = 2 then begin proc3; end;end;type TCustomExternalController = class(TObject) protected procedure Step1; virtual; abstract; procedure Step2; virtual; abstract; .... //自己按需要加方法,这里只是随便给个例子 public procedure Execute; end; TNetController = class(TCustomExternalController) protected procedure Step1; override; procedure Step2; override; end; TUSBController = class(TCustomExternalController) protected procedure Step1; override; procedure Step2; override; end; TSerialPortController = class(TCustomExternalController) protected procedure Step1; override; procedure Step2; override; end;implementationprocedure TCustomExternalController.Execute;begin //如果这些东西执行的过程类似,可以把执行过程抽象到这个方法里,子类覆盖具体步骤即可 //关键字:模板模式。可参考TStream的实现方式。 Step1; Step2;end;
[解决办法]
http://blog.csdn.net/liangpei2008/archive/2009/05/20/4204743.aspx
[解决办法]