亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Delphi全局變量帶來的問題

發布時間:2020-07-31 03:32:55 來源:網絡 閱讀:309 作者:alexanda2000 欄目:開發技術

最近在寫一個Delphi程序,想到一個問題,即Delphi為了方便使用的需要,自動創建了所有的窗體,并將這些窗體變量自動聲明為全局變量。想了一下,這會帶來一些問題:

1、窗體聲明為全局變量,可以隨時隨地可用,但也同時意味著,隨時會被修改和調用,調用關系復雜,且難以被追蹤。

2、不符合面對向象的要求。由于窗體全局變量的存在,在各個類的方法實現中,涉及到其它窗體時,代碼都是類似于 frmMain.XXX 、 frmAddInstance.XXX ,使用窗體變量進行直接調用。但這樣是不合理的,一個類的方法實現,直接調用的是某一個具體對象的方法,而不是通過創建、組合、繼續的方式來實現代碼,不符合面對對象的精神。

如:TForm1的OnClick方法里,經常看到開發人員這樣寫:

procedure TForm1.OnClick(Sender:TObject);

begin

form1.Caption := 'abc';

form2.Visable := not form2.Visable;

end;

這里在一個類的實現方法里直接使用了form1這個全局窗體變量,雖然運行沒有問題,但如果TForm1創建了第二個實例呢,點擊第二個實例的窗體時,它的標題根本不會變,但是第一個實例反而改變了。這樣的代碼肯定是可笑的。如果亡羊補牢,應該把from1改為self。這里對form2的引用也是類似,代碼實現引用了具體的全局實例而不是由自己創建或控制的對象,是不合理的。

Delphi的機制難以改變,暫時可以將每個窗體的全局變量看作是單例變量來使用,即不要嘗試去創建窗體的第二個實例。

3、Delphi創建的數據模塊,上面的組件全部都是可見的,雖然操作方便,但很容易引導開發人員直接去操作組件。更合理的方式是將這些操作封裝為模塊公開的方法,每個方法實現特定的業務邏輯,其它窗體通過這些方法(即廣義上的模塊接口)去操作,而不是直接操作組件,從而達到解耦的目的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建宁县| 左权县| 治县。| 大连市| 灵寿县| 班戈县| 宝清县| 岑溪市| 云龙县| 临朐县| 康保县| 铜鼓县| 新疆| 唐河县| 丽江市| 肇东市| 义马市| 泾源县| 若羌县| 太保市| 翁牛特旗| 兴安县| 凯里市| 贡觉县| 牟定县| 田阳县| 永川市| 临高县| 凤凰县| 响水县| 苏尼特右旗| 昌都县| 集贤县| 横山县| 海安县| 花莲县| 丽水市| 桐梓县| 斗六市| 西乌珠穆沁旗| 车险|