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

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

編輯:Delphi

規則13:使用屬性的附加作用(Use Side-Effects In PropertIEs)

請記住:使用屬性而不是訪問全局變量(參見規則10、11、12)的好處之一就是當你設置或者讀取屬性的值時,你還可能有意想不到的收獲。

例如,你可以直接在窗體界面上拖拉組件,設置多個屬性的值,調用特殊方法,立即改變多個組件的狀態,或者撤銷一個事件(如果需要的話)等等。

規則14:隱藏組件(Hide Components)

我經常聽見那些面向對象編程的狂熱追求者抱怨Delphi窗體中包含一些在published部分聲明的組件,這是和面向對象思想的封裝性原理不相符合的。他們確實提出了一個重要的議題,但是他們中的大多數人都沒有意識到解決方法其實就在他們手邊,完全不用重寫Delphi代碼,也不用轉向其他語言。

Delphi向窗體中添加的組件參照可以被移到private部分,使得其他窗體不能訪問他們。如果你這樣做,你就有必要設置一些指向組件的窗體屬性(請參見規則11),並且使用它們來訪問組件的狀態。

Delphi將所有的這些組件都放在published部分,這是因為使用這種方式能夠保證這些域一定是在.DFM文件中創建的組件。當你改變一個組件的名稱時,VCL能夠自動地將這個組件對象與它在窗體中的參照關聯起來。因為delphi使用RTTI和Tobject方法來實現這種功能,所以如果想要使用這種自動實現功能,就必須把參照放置在published部分(這也正是為什麼Delphi將所有的組件都放在published部分的緣故)。

如果你想知道的更詳細一點,可以參看下面的代碼:

procedure Tcomponent.SetReference(Enable:Boolean);
var
FIEld:^Tcomponent;
begin
If Fowner<> nil then begin
Field:=Fowner.FIEldAddress(Fname);
If FIEld<>nil then
FIEld^:=Self
else
FIEld^:=nil;
end;
end;

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