国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > Delphi > 正文

如何將界面代碼和功能代碼分離(基于Delphi/VCL)

2019-11-18 18:52:37
字體:
來源:轉載
供稿:網友

    很多朋友看了上次我寫的“創(chuàng)建良好設計的代碼(基于Delphi/VCL)”后,對我說感覺上可以接受其中的觀點,但似乎說得太簡單,不夠具體;也有的朋友對其中的一個小例子有些異議。因此便有了此文。

    上次,我舉的例子是這樣的:假設要從某處獲得一個字符串列表,然后顯示于 TListBox 中,我所推崇的代碼是:
    ObjectXXX := TObjectXXX.Create;
    ListBox1.Items := ObjectXXX.GetStringList;
    ObjectXXX.Free;
    的確,我承認,單純從這三行代碼來看,似乎有了“濫用對象”之嫌。也許是例子過于簡單,給人的感覺是TObjectXXX只有GetStringList這一個public成員函數,如果真的這樣的話,那可真是“濫用對象”了。類是對對象的抽象,而對象是由狀態(tài)和操作(也就是數據和對數據的操作)的集合組成。因此,沒有狀態(tài)的對象不是對象!沒有私有數據成員的類的設計是失敗的設計(那不是類,而是接口了)。

    好,下面我就舉一個詳細的例子來說明,如何將界面代碼和功能代碼分離。
    假設我要做一個簡單的個人通訊錄管理軟件,很顯然,整個軟件分為兩部分:一部分是面象用戶的,也就是所謂界面部分,我可以提供四個按鈕(分別為“添加”、“刪除”、“修改”、“查找”)和一個編輯框(顯示通訊錄信息和接受用戶輸入)用于和用戶交互;另一部分是功能化的,也就是軟件內部的對于通訊錄的存取操作。
    于是,有了一個TAddrBook類,它是對功能化部分的抽象。
    TAddrBook = class
    PRivate
        //一些私有成員
    public
        constructor Create;
        destructor Destroy;override;
        GetCount: Integer;
        FindRecord(strString): Integer;
        GetRecord(nIndex:Integer): String;
        SetRecord(nIndex:integer; strRec:String): Boolean;
        AddRecord(strRec:String): Boolean;
        DelRecord(nIndex): Boolean;
        //其它共有成員函數
    end;
    私有成員之所以無法確定,主要是取決于這個類的實現(xiàn)。
   
    如此,可以將對通訊錄的存取操作的邏輯封裝。而界面部分的代碼不會涉及到這些存取邏輯。界面部分代碼如下:
    var
      Form1: TForm1;
      AddrBook: TAddrBook;
      nCurRec: Integer;

    implementation   
   
    procedure TForm1.FormCreate(Sender: TObject);
    begin
        AddrBook := TAddrBook.Create;
        nCurRec := AddrBook.GetCount;
    end;

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
        AddrBook.Free;
    end;
   
    //添加按鈕
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        if not AddrBook.AddRecord(memo1.Text) then
            ShowMessage("error");
    end;
   
    //刪除按鈕
    procedure TForm1.Button2Click(Sender: TObject);
    begin
        if not AddrBook.DelRecord(nCurRec) then
            ShowMessage("error");
    end;
   
    //修改按鈕
    procedure TForm1.Button3Click(Sender: TObject);
    begin
        if not AddrBook.SetRecord(nCurRec, memo1.Text) then
            ShowMessage("error");
    end;
   
    //查找按鈕
    procedure TForm1.Button4Click(Sender: TObject);
    begin
        memo1.Text := AddrBook.GetRecord(AddrBook.FindRecord(memo1.Text));
    end;
   
    以上界面部分的代碼,不涉及任何存取邏輯,每個模塊的代碼簡單,易懂,便于維護。而實際上,該通訊錄是使用數據庫保存還是用文本文件來保存,界面代碼都不知道;使用數據庫的話,是通過ODBC還是ADO還是BDE訪問數據庫,界面代碼也不知道。實際上,這些存取邏輯的東西取決于TAddrBook類的實現(xiàn),TAddrBook類的實現(xiàn)可以單獨的放在一個.pas文件中,對TAddrBook類的實現(xiàn)的任何更改,都不會影響界面部分。維護代碼的時候,將更改局限于某一個模塊中的做法是非常明智的。
   
   
Nicrosoft(nicrosoft@sunistudio.com) 于 2001.7.14


上一篇:DELPHI的原子世界(2)

下一篇:在Delphi的DBGrid中插入其他可視組件

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产精品jvid在线观看| 就爱干草视频| 2018中文字幕在线观看| 在线午夜视频| 午夜免费福利在线观看| 午夜在线视频| 国产超碰97| 天天操天天操一操| 国产精美视频| 国产精品麻豆一区二区三区| 不卡av免费观看| 国产福利av网站| 国产中文字幕在线播放| 天堂在线视频| www.狠狠色.com| 91青青在线视频| www.毛片| 免费在线看v| 日本天堂影院在线视频| 一区二区免费播放| 91午夜视频| 国产福利在线| 国产高潮又爽又无遮挡又免费| 国产高清免费av在线| 国产麻豆精品一区二区三区v视界| a√在线视频| 福利视频在线看| 精品999视频| 最近最好的中文字幕2019免费| 国产在线麻豆精品| 永久免费网站在线| 伊人伊人av电影| 中文资源在线官网| 国产福利在线视频| 自拍亚洲国产| 国产精品伦理一区二区三区| 人人干在线视频| 美女免费视频黄| www.蜜桃av| 丁香六月婷婷| 国产精品9区| 69精品视频| 99re在线视频| www.亚洲视频| 国产麻豆免费| 精品卡一卡卡2卡3网站| 人人在线视频| 午夜视频在线免费| 青青草原国产在线| 国产农村av| 亚洲欧美综合乱码精品成人网| 丁香综合在线| 成网站在线观看人免费| 国产一区精品| 国产精品伦一区二区三区级视频频 | 天天操人人干| 天堂中文在线视频| 国产一级黄色电影| 国产精品久久久精品a级小说| 国产特黄在线| 精品一区二区三区在线观看l| 国产区高清在线| 国产视频资源| av亚洲男人天堂| 懂色一区二区三区| 免费a级在线播放| 久久久久久91精品色婷婷| 一区二区三区四区在线免费视频| 国产色在线观看| 亚洲v片在线观看| 国产精选在线视频拍拍拍| 中文字幕日本在线观看| 国产三级视频在线| 日韩不卡高清| 国产区在线看| 性色视频在线| 午夜国产视频| 免费精品国产自产拍观看| 国产区成人精品视频| 天堂中文在线观看| 国产一卡2卡3卡免费网站| 精品视频vs精品视频| 色欧美在线观看| 国产一二三区精品视频| 欧美日韩**字幕一区| 国产精品视频一区二区三区麻豆| 四虎精品成人a在线观看| 午夜国产在线| 久久综合精品视频| 亚洲日本一区二区三区在线观看 | 午夜不卡视频| 日本欧美在线视频免费观看| 成 人免费视频播放| 亚洲精品视频在线免费| 天天插天天狠天天透| 国产人成精品| 99视频免费在线观看| 青青久草在线| 日本成人网址| 久久国产热视频| 六月天色婷婷| 久久五月精品| 国产免费福利| 成 人免费视频播放| 日本高清中文字幕| 亚洲精品一线| 青青艹在线视频| 成年黄网站在线观看免费| 青青草视频在线观看| 夜夜爽视频导航| 在线观看电影av| 四虎精品视频| 精品视频一二三| 亚洲视频在线网| av在线播放网| 丁香花视频在线观看| 黄污在线观看| 国产美女av| 国产小视频在线| 国产精品入口麻豆高清| 在线中文字幕观看| 国产精品白浆视频免费观看| 国产aⅴ超薄肉色丝袜交足| 精品久久亚洲一级α| 国产黄色免费网站| 欧美专区日韩| 天天操人人爽| 一本大道久久精品| 久久综合第一页| 国产精品白浆流出视频| 伊人网站在线| 秋霞av在线| 国产精品国精产品一二| a视频免费看| 国产福利在线免费观看| 久久精品国产麻豆| 在线免费观看黄色av| 国产理论电影在线观看| 在线观看中文字幕一区| 青草视频在线播放| 精品a在线观看| 国产精选在线视频拍拍拍| 四虎精品视频| av免费在线观| 91在线中文| 国产黄色免费网站| 男女羞羞视频在线观看| 国产porny蝌蚪视频| 国产丝袜在线观看视频| 国产卡1卡2卡三卡在线| 日本成人a视频| 在线中文字幕av| 中文字幕免费中文| 激情视频国产| 亚洲最新永久在线观看| 国产福利片在线| 国产成人午夜电影| 国产精品久久久久久精| 国产网站观看9久| 国产精选在线视频拍拍拍| 国产在线资源| 九九99精品| 九色视频网站| 国产美女视频网站| 狠狠干天天干| 99热国产在线| 日本成人在线播放| 日本亚洲精品| 九九视频在线播放| а√天堂8资源在线官网 | 欧美卡一卡二| 九九热视频精品在线观看| 开心婷婷激情| 国产男女无套在线播放| 99热最新网址| 国产黄色av免费看| 午夜影院免费| 久久久久国产精品嫩草影院| 国内自拍视频在线观看| 国产女呦网站| 免费国产视频| 小说区乱图片区| eeuss影院网站免费观看| 国产在线观看a视频| 国产精品视频h| 在线成人一区| 国产蜜臀在线| 精品亚洲成a人片在线观看| 四虎a级欧美在线观看| 中文字幕视频在线观看| 国产区成人精品视频| 天堂中文在线观看| 国产精品视频一区二区久久| 精品福利影院| 日本中文字幕在线观看| av免费在线观看网站| 五月婷婷在线观看| 午夜影院在线| 国产精品秘入口| 久久亚洲国产成人亚|