程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 將面向對象的思想貫穿始終--談Delphi開發(第二篇)

將面向對象的思想貫穿始終--談Delphi開發(第二篇)

編輯:Delphi

 

(接第一篇)

將面向對象的思想貫穿始終,這個題目好象有些大了。我剛才在這裡說的,提到的,其實只是在編碼的時候,應當注意的一些小問題。所以’貫穿始終’這個用語,改為’牢記在心’可能更為貼切。

對於Delphi某些特性的一點意見:

不知各位注意到沒有,在Delphi的Form中放置的所有組件(包括控件),對於其他Form來說,都是可見的,准確地說,這些組件都是該Form的Public部分的內容。這樣的結果,一方面是好的,因為其靈活性,其他類可以方便的引用Form上的這些組件,設置它們的屬性,執行它們的方法,事件等等;但是另一方面它的缺陷也是顯而易見的,那就是導致了Form的封裝性的喪失。在我看來,放置於Form之上的這些組件,就使用者的本意而言,應當是作為該Form的私有屬性而存在的,對於其他類或其他Form本應該不可見。即使需要訪問它們,也應當通過由Form提供一系列的屬性方法來間接的訪問。

舉個例子,讓大家有些感性的認識:

procedure TForm1.Button1Click(Sender: TObject);

begin

  Form2.Edit1.Text := abc; // <-- 這個句子的寫法,本人很不贊同。

end;

可能很多人寫這樣的代碼的時候腦子裡還沒有封裝性的概念,可是你看了這篇文章,就再也不要干這樣的事了(改邪歸正吧你!)。在我看來TForm1就是TForm1,TForm2就是TForm2,它們都是為了實現某些特定的功能而存在的,所以它們提供給外界一些接口(一些屬性,方法,還有事件,事件說嚴格一點,也是屬性),來實現它們自己所承諾的功能。至於這些接口的具體實現,應當由它們自身來維護,外界沒有必要,也沒有辦法插手。這個思想,對應到實際應用中,也就是Form2.Edit1是否有必要被From1直接訪問的問題了。我本人比較傾向於下面的實現:

  //以下為Unit1中TForm1的部分內容

procedure TForm1.Button1Click(Sender: TObject);

begin

TForm2(FAnotherForm).EditText := abc; // <-- 這個實現,體現了封裝的思想

end;

//以下為Unit2中TForm2的定義

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