• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    追求代碼質量: 謹防緊密耦合!

    發布: 2008-6-13 15:42 | 作者: 不詳 | 來源: 測試時代編輯整理 | 查看: 104次 | 進入軟件測試論壇討論

    領測軟件測試網

    清單 2 中的代碼出現了問題,尤其是它通過一個硬編碼的 SQL 語句直接與一個硬編碼的數據庫進行通信。Yeeesh! 您能夠想像開發人員測試這種 GUI 和相關數據庫的挑戰嗎(順便說一下,測試本應該簡單得像測試一個 Web 頁面一樣)? 倘若對數據庫的任何改動都 影響到 GUI,那么要考慮修改系統的話會使情況變得更糟。

    DAO 模式
    Data Access Object (DAO) 是一種設計模式,它旨在使用接口和相關實現把低級的數據訪問操作從高級事務邏輯中分離出來。從本質上說,某個具體的 DAO 類通過特定的數據源實現訪問數據的邏輯。DAO 模式使得只使用一個接口為多個數據庫,或者甚至各種不同的數據源(如文件系統)定義多個具體實現成為了可能。

    轉變為松散耦合!

    現在在腦海中考慮一下使用依賴性倒置原則設計的相同的系統。如圖 2 所示,通過向應用程序添加兩個組件來解除應用程序中的耦合是可能的:這兩個組件分別是一個接口和一個實現:


    圖 2. 一個松散耦合的系統

    在圖 2 所示的應用程序中,GUI 依賴于一個抽象 —— 一個數據訪問對象或 DAO。DAO 的執行直接依賴于數據庫,但是 GUI 本身并沒有陷入其中。以 DAO 的形式添加一個抽象可以從 GUI 實現將數據庫實現解耦。一個接口會替代數據庫與 GUI 代碼相耦合。清單 3 顯示了該接口。


    清單 3. WidgetDAO 是一個能幫助解耦架構的抽象

                 
    public interface WidgetDAO {
      public String getOrderStatus(String widget);
      //....
    }
    

    GUI 的 ActionListener 代碼引用接口類型 WidgetDAO(定義在清單 3 中)而不是接口的實際實現。在清單 4 中,GUI 的 getOrderStatus() 方法在本質上指定的是 WidgetDAO 接口:


    清單 4. GUI 依賴于抽象,而不是數據庫

    private String getOrderStatus(String value) {
      return dao.getOrderStatus(value);
    }

    對 GUI 完全隱藏了這個接口的實際實現,因為它是通過一個工廠來請求實現類型的,如清單 5 所示:


    清單 5. 對 GUI 隱藏了 WidgetDAO 實現

                    
    private WidgetDAO dao;
    //...
    private void initializeDAO() {
      this.dao = WidgetDAOFactory.manufacture();
    }
    
    進展順利

    注意,清單 5 中的 GUI 中的代碼只引用接口類型 —— GUI 中的任何地方都沒有使用(或導入)接口的實現。這種對實現細節的抽象是靈活性的關鍵:它使您能夠更換實現類型,而完全不會影響到 GUI。

    還要注意,清單 5 中的 WidgetDAOFactory 是如何使 GUI 避開 WidgetDAO 類型的創建細節的。這些是工廠的任務,如清單 6 所示:

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    53/5<12345>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>