程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi面向對象編程的20條規則(8)

Delphi面向對象編程的20條規則(8)

編輯:Delphi

規則20:用於屬性的虛擬方法(Virtual Methods For PropertIEs)

即使是訪問屬性的方法也能定義成virtual,這樣派生類就能改變屬性的動作而不必重定義他們。雖然這種方法在VCL當中很少使用,但是它確實十分靈活、強大。為了實現這一點,僅僅需要將Rule 11當中的Get 和Set 方法定義成Virtual。基類的代碼如下所示:

type
TformDialog = class ( TForm)
Procedure FormCreate(Sender:Tobject);
Private
Edit1:Tedit;
Protected
function GetText:String;virtual;
procedure SetText(const Value:String);virtual;
public
constructor Create(Text :String):reintroduce;overload;
property Text:String read GetText write SetText;
end;

在繼承窗體中,你可以添加一些額外的動作來重載虛擬方法SetText:

procedure TformInherit.SetText(const Value:String);
begin
inherited SetText(Value);
if Value=’’ then
Button1.Enabled:=False;
end;

小結

要做到一個好的Delphi面向對象編程程序員遠非我在上面提到的這些規則這麼簡單。上面的這20條規則中有一些可能需要足夠的耐性和時間來實現,因此,我也不能強求你能遵循所有的這些規則。但是這些規則應該被合適的運用到你的程序中,而且當你開發的應用程序越大,參與的程序員越多,這些規則越重要。不過,即使是一些小程序,始終記住這些規則並在合適的地方使用他們也會對你有所幫助。

當然,還有很多其他的經驗規則我沒有涉及到,特別是存儲器處理和RTTI問題,因為他們十分的復雜,需要專門的說明。

我的結論是要遵循我上面列出的規則會付出一定的代價,特別是額外的代碼,但是這些代價會讓你得到一個更加靈活強壯的程序。希望Delphi的後續版本能夠幫組我們減少這些代價。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved