91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

金阳县| 英山县| 白银市| 灵璧县| 旬邑县| 兴文县| 彝良县| 天峻县| 澳门| 嘉定区| 碌曲县| 墨江| 罗源县| 中卫市| 灵寿县| 上犹县| 平罗县| 读书| 江都市| 凤阳县| 衡阳县| 贵定县| 且末县| 鄂温| 积石山| 紫金县| 昌乐县| 镇雄县| 柳州市| 内乡县| 保德县| 彰化县| 丁青县| 天峨县| 芮城县| 城市| 南川市| 广昌县| 延庆县| 大英县| 辽阳县|