很多時候,我們遇到這樣得情況:
在很多方法的前面部分和後面部分(可能只有一句代碼)都一樣,或者相似。 比如在一個需要花費些許時間的處理中,我們經常會在處理的同時顯示一個進度條,這樣給客戶和我們自己一點信心。 可是如果有很多這樣的處理,我們就會發現有這樣代碼
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.
不知道有沒有不同看法。。。