很多时候,我们遇到这样得情况:
在很多方法的前面部分和后面部分(可能只有一句代码)都一样,或者相似。 比如在一个需要花费些许时间的处理中,我们经常会在处理的同时显示一个进度条,这样给客户和我们自己一点信心。 可是如果有很多这样的处理,我们就会发现有这样代码
procedure perform1;
begin
ShowAProgress('正在连接。。。');
.....
CloseProgress;
end;
procedure performN
begin
ShowAProgress('正在处理××,请稍等。。。');
.....
CloseProgress;
end;
显然我们的代码重复了。 解决这样的问题,应该有很多办法吧。 我不知道别人怎么解决的,下面是我的解决办法:
type
TProc = procedure of object;
procedure RunWithProgress(P: TProc); /// 我管它叫夹饼方法。 不知道大家有没有意见。
implementation
procedure TForm1.Aloop; // 某个处理。
var
iLoop: Integer;
begin
chk1.Checked := True;
while chk1.Checked do
begin
Application.ProcessMessages;
Inc(iLoop);
end;
end;
procedure TForm1.RunWithProgress(P: TProc); // 夹饼的实现。
begin
ShowGaugeWithAvi('it is running....');
p;
CloseGauge;
end;
procedure TForm1.Button1Click(Sender: TObject); // 每次只要调用夹饼就可以了。
var
P: TProc;
begin
P := aloop;
RunWithProgress(p);
end;
end.
不知道有没有不同看法。。。